01.07.2015 19:55, Denys Vlasenko wrote:
> Rob Landley has an opposite view: preprocessor #if's are evil.
> 
> I agree with him that they do tend to obfuscate.

So what's the solution to this?  Blame compilers and force them to
act like GCC does?

Thanks,

/mjt

> On Sun, Jun 28, 2015 at 9:44 AM, Michael Tokarev <m...@tls.msk.ru> wrote:
>> [Rehashing a thread from 3 years ago]
>>
>> 28.01.2013 11:48, Denys Vlasenko wrote:
>>> On Monday 28 January 2013 00:17, Abdoulaye Walsimou GAYE wrote:
>>
>>>>>>> diff --git a/archival/libarchive/Kbuild.src 
>>>>>>> b/archival/libarchive/Kbuild.src
>>>>>>> index 58457fc..87e1ab9 100644
>>>>>>> --- a/archival/libarchive/Kbuild.src
>>>>>>> +++ b/archival/libarchive/Kbuild.src
>>>>>>> -lib-$(CONFIG_TAR)                       += get_header_tar.o
>>>>>>> +lib-$(CONFIG_TAR)                       += get_header_tar.o 
>>>>>>> decompress_uncompress.o
>>>>
>>>> /home/walsimou/embtoolkit.git/build/packages_build-mipsel-linux-mips32/busybox-1.20.2/archival/tar.c:1065:
>>>>  undefined reference to `unpack_Z_stream'
>>>> /home/walsimou/embtoolkit.git/build/packages_build-mipsel-linux-mips32/busybox-1.20.2/archival/tar.c:1065:
>>>>  undefined reference to `unpack_Z_stream'
>>>> /home/walsimou/embtoolkit.git/tools-mipsel-linux-mips32/bin/mipsisa32el-unknown-linux-uclibc-ld:
>>>>  busybox_unstripped: hidden symbol `unpack_Z_stream' isn't defined
>>>> /home/walsimou/embtoolkit.git/tools-mipsel-linux-mips32/bin/mipsisa32el-unknown-linux-uclibc-ld:
>>>>  final link failed: Bad value
>>>> mipsisa32el-unknown-linux-uclibc-clang: error: linker command failed with 
>>>> exit code 1 (use -v to see invocation)
>>>
>>>
>>> I was able to build busybox-1.20.2 with this .config
>>> without errors.
>>>
>>> Looks like your compiler did not optimize this out:
>>>
>>>                 if (opt & OPT_COMPRESS)
>>>                         USE_FOR_MMU(xformer = unpack_Z_stream;)
>>>                         USE_FOR_NOMMU(xformer_prog = "uncompress";)
>>>
>>>
>>> even though OPT_COMPRESS is a constant zero.
>>
>> The same prob exists with clang, apparently,  Here's a bugreport
>> filed against debian package of busybox: http://bugs.debian.org/789499 .
>> The proposed fix is to apply the above patch only if building
>> with clang :)
>>
>> Basically, I'm not sure relying on dead code elimination like this is
>> a good idea.  I mean, the code is eliminated, there's no if() statement
>> in the generated code, so it is okay, but it looks like clang still
>> records symbols referenced in the eliminated code.  Sometimes it
>> is actually a good idea to keep ref symbols, eg when you build an
>> executable which can load modules, so that modules will use symbols
>> in that executable.
>>
>> Thanks,
>>
>> /mjt
>>

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to