Re: m68k allmodconfig build errors

From: Randy Dunlap
Date: Thu Jul 26 2018 - 15:29:22 EST


On 07/23/2018 09:49 PM, Finn Thain wrote:
> On Mon, 23 Jul 2018, Randy Dunlap wrote:
>
>> On 07/20/2018 12:20 AM, Andreas Schwab wrote:
>>> On Jul 19 2018, Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
>>>
>>>> block/partitions/ldm.o: In function `ldm_partition':
>>>> ldm.c:(.text+0x1900): undefined reference to `strcmp'
>>>> ldm.c:(.text+0x1964): undefined reference to `strcmp'
>>>> drivers/rtc/rtc-proc.o: In function `is_rtc_hctosys':
>>>> rtc-proc.c:(.text+0x290): undefined reference to `strcmp'
>>>> drivers/watchdog/watchdog_pretimeout.o: In function `watchdog_register_governor':
>>>> (.text+0x142): undefined reference to `strcmp'
>>>
>>> GCC has optimized strncmp to strcmp, but at a stage where macros are no
>>> longer available. I think the right fix is to use strcmp directly,
>>> since strncmp doesn't make sense here.
>>
>> Hi Andreas,
>>
>> I don't see that all of these string compare fields are null-terminated.
>>
>
> Some of the strncmp calls in ldm.c are null-terminated, some are not.
>
> That would imply that the compiler will emit both strcmp and strncmp
> calls.
>
> A strncmp call isn't a problem, because m68k doesn't define
> __HAVE_ARCH_STRNCMP and so the one from lib/string.c gets built.
>
>> How does one convert strncmp() users to strcmp()?
>>
>> thanks,
>>
>
> The untested patch below may work. It seems that it may be relevant to
> both arc and m68k:


I got back to looking at the build errors. I agree with Andreas that
all of the fields in question are null-terminated, so Finn's patch looks
good to me.


--
~Randy