Medido en el worker, con el único cambio de /bin/sh en una copia por hardlinks del lab (sed/grep/awk siguen siendo busybox) y stores tirables. Control busybox: 3/3 recetas selladas. brush: 0/3. Lo que pasa: 56/57 del banco POSIX (igual que busybox), 0 rechazos sobre las 1130 fases de shell del corpus, parsea el configure de ffmpeg, funciona como argv[0]=sh y con el patrón de las cards de arje. Lo que falla: el configure corre entero pero el libtool que GENERA sale con un nivel de escapado de menos en 25 líneas, y ese fichero ya no lo parsea ningún shell. El parser de brush está bien — parsea sin quejarse el libtool del control. Mecanismo exacto no determinado: echo, sustitución de comando y el propio func_quote_for_eval de libtool dan idéntico en ambos shells aislados. Y un dato independiente del bug: 813us de arranque contra 91us de busybox (8,9x), sobre decenas de miles de shells por configure. El binario son 7,25 MB contra los 1,23 MB del busybox con sus 401 applets. De paso: brush selló con el mismo hash que traía build-state del otro hub. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
99 lines
4.9 KiB
Diff
99 lines
4.9 KiB
Diff
# Evidencia del veredicto del paso 3 de docs/plan-botar-busybox.md (2026-09-21).
|
|
# libtool generado por el mismo configure de pkgconf, con dos shells distintos como /bin/sh.
|
|
# < = control, busybox 1.36.1 sh | > = brush 0.4.0
|
|
# 25 líneas difieren, todas por un nivel de escapado de menos en el lado de brush.
|
|
# El fichero de la derecha ya no lo parsea NINGÚN shell (rc=2 en ambos, línea 368).
|
|
|
|
62c62
|
|
< ECHO="printf %s\\n"
|
|
---
|
|
> ECHO="printf %s\n"
|
|
111c111
|
|
< SP2NL="tr \\040 \\012"
|
|
---
|
|
> SP2NL="tr \040 \012"
|
|
114c114
|
|
< NL2SP="tr \\015\\012 \\040\\040"
|
|
---
|
|
> NL2SP="tr \015\012 \040\040"
|
|
132c132
|
|
< file_magic_cmd="\$MAGIC_CMD"
|
|
---
|
|
> file_magic_cmd="$MAGIC_CMD"
|
|
144c144
|
|
< sharedlib_from_linklib_cmd="printf %s\\n"
|
|
---
|
|
> sharedlib_from_linklib_cmd="printf %s\n"
|
|
163c163
|
|
< old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib"
|
|
---
|
|
> old_postinstall_cmds="chmod 644 $oldlib~$RANLIB $tool_oldlib"
|
|
176c176
|
|
< global_symbol_pipe="/bin/sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | /bin/sed '/ __gnu_lto/d'"
|
|
---
|
|
> global_symbol_pipe="/bin/sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | /bin/sed '/ __gnu_lto/d'"
|
|
179c179
|
|
< global_symbol_to_cdecl="/bin/sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
|
|
---
|
|
> global_symbol_to_cdecl="/bin/sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'"
|
|
185c185
|
|
< global_symbol_to_c_name_address="/bin/sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'"
|
|
---
|
|
> global_symbol_to_c_name_address="/bin/sed -n -e 's/^: \(.*\) .*$/ {"\1", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'"
|
|
188c188
|
|
< global_symbol_to_c_name_address_lib_prefix="/bin/sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'"
|
|
---
|
|
> global_symbol_to_c_name_address_lib_prefix="/bin/sed -n -e 's/^: \(.*\) .*$/ {"\1", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'"
|
|
261c261
|
|
< libname_spec="lib\$name"
|
|
---
|
|
> libname_spec="lib$name"
|
|
265c265
|
|
< library_names_spec="\$libname\$release\$shared_ext\$versuffix \$libname\$release\$shared_ext\$major \$libname\$shared_ext"
|
|
---
|
|
> library_names_spec="$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext"
|
|
268c268
|
|
< soname_spec="\$libname\$release\$shared_ext\$major"
|
|
---
|
|
> soname_spec="$libname$release$shared_ext$major"
|
|
280c280
|
|
< finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
|
|
---
|
|
> finish_cmds="PATH="\$PATH:/sbin" ldconfig -n $libdir"
|
|
317c317
|
|
< reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
|
|
---
|
|
> reload_cmds="$LD$reload_flag -o $output$reload_objs"
|
|
320c320
|
|
< old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
|
|
---
|
|
> old_archive_cmds="$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib"
|
|
350c350
|
|
< export_dynamic_flag_spec="\$wl--export-dynamic"
|
|
---
|
|
> export_dynamic_flag_spec="$wl--export-dynamic"
|
|
353c353
|
|
< whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive"
|
|
---
|
|
> whole_archive_flag_spec="$wl--whole-archive$convenience $wl--no-whole-archive"
|
|
365,369c365,369
|
|
< archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname -o \$lib"
|
|
< archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
|
|
< cat \$export_symbols | \$SED -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
|
|
< echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
|
|
< \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname \$wl-version-script \$wl\$output_objdir/\$libname.ver -o \$lib"
|
|
---
|
|
> archive_cmds="$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib"
|
|
> archive_expsym_cmds="echo "{ global:" > $output_objdir/$libname.ver~
|
|
> cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
|
|
> echo "local: *; };" >> $output_objdir/$libname.ver~
|
|
> $CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib"
|
|
387c387
|
|
< hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir"
|
|
---
|
|
> hardcode_libdir_flag_spec="$wl-rpath $wl$libdir"
|
|
426c426
|
|
< export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
|
|
---
|
|
> export_symbols_cmds="$NM $libobjs $convenience | $global_symbol_pipe | $SED 's/.* //' | sort | uniq > $export_symbols"
|