Re: Deprecation of i386 and 32-bit powerpc for 15.0 [ an aarch64/armv7 context note for -m32 ]

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.architechture
Message-ID <[email protected]>
[Reporting: 14.3-RELEASE gets some different behavior.]

On Jun 21, 2025, at 23:35, Mark Millard <[email protected]> wrote:

> Konstantin Belousov <kostikbel_at_gmail.com> wrote on
> Date: Sun, 22 Jun 2025 02:55:15 UTC :
> 
>> On Sat, Jun 21, 2025 at 06:39:03PM -0700, Rodney W. Grimes wrote:
>>> . . .
>> 
>> The i386 world on amd64 kernel is the supported configuration, and I
>> will put the efforts to keep this going. Simultaneously, there is not
>> much value in the full world for i386, lib32 + cc -m32 is the most
>> interesting thing for me and perhaps, practically, for all other people
>> who really use 32bit (as opposed to use it for flaming on ml).
>> 
>> . . .
> 
> In this area, but for aarch64/armv7 instead of amd64/i386:
> 
> # cc -v -m32 basic_double_use.c
> 
> in an aarch64 context reports using:
> 
> "/usr/bin/cc" -cc1 -triple armv4t-unknown-freebsd15.0
> 
> So: not armv7 and no -gnueabihf
> 
> The context has:
> 
> # cc -v
> FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd708029e0b2)
> Target: aarch64-unknown-freebsd15.0
> Thread model: posix
> InstalledDir: /usr/bin
> Build config: +assertions
> 
> By contrast, in an armv7 context:
> 
> # cc -v
> FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd708029e0b2)
> Target: armv7-unknown-freebsd15.0-gnueabihf
> Thread model: posix
> InstalledDir: /usr/bin
> Build config: +assertions
> 
> But . . .
> 
> # cc -v -m32 basic_double_use.c
> 
> reports using:
> 
> "/usr/bin/cc" -cc1 -triple armv7-unknown-freebsd15.0-gnueabihf . . .
> 
> as expected: armv7 and -gnueabihf in use. 
> 
> Thus on aarch64, one needs to be explicit about -target ,
> unlike on armv7:
> 
> # cc -v -m32 -target armv7-unknown-freebsd15.0-gnueabihf basic_double_use.c
> 
> reports using:
> 
> "/usr/bin/cc" -cc1 -triple armv7-unknown-freebsd15.0-gnueabihf
> 
> In summary: -m32 ends up with the wrong default -target
> for the modern aarch64 FreeBSD type of context.
> 
> 
> For reference:
> 
> # cat basic_double_use.c
> int main(void)
> {
>    volatile double a=10;
>    volatile double b=13;
>    return (a*b<b/a) ? 0 : 1;
> }
> 
> 
> I've updated https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272806
> with a version of these notes, as they should be clearer than my
> original submittal for the issue.
> 

Note: 14.3-RELEASE has the following properties for the
undefined symbol issue . . .

# cc -v -m32 -target armv7-unknown-freebsd15.0-gnueabihf basic_double_use.c
. . .

does not report such problems. But . . .

# cc -v -m32 basic_double_use.c
. . .
"/usr/bin/cc" -cc1 -triple armv4t-unknown-freebsd14.3 . . .
. . .
"/usr/bin/ld" --eh-frame-hdr -dynamic-linker /libexec/ld-elf.so.1 --hash-style=both --enable-new-dtags -o a.out /usr/lib32/crt1.o /usr/lib32/crti.o /usr/lib32/crtbegin.o -L/usr/lib32 /tmp/basic_double_use-76fb64.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib32/crtend.o /usr/lib32/crtn.o
ld: error: undefined symbol: __muldf3
 >>> referenced by basic_double_use.c
 >>> /tmp/basic_double_use-76fb64.o:(main)
 >>> did you mean: __muldc3
 >>> defined in: /usr/lib32/libgcc_s.so

ld: error: undefined symbol: __divdf3
 >>> referenced by basic_double_use.c
 >>> /tmp/basic_double_use-76fb64.o:(main)
 >>> did you mean: __divdc3
 >>> defined in: /usr/lib32/libgcc_s.so

ld: error: undefined symbol: __ltdf2
 >>> referenced by basic_double_use.c
 >>> /tmp/basic_double_use-76fb64.o:(main)
cc: error: linker command failed with exit code 1 (use -v to see invocation)

So the undefined symbols are tied to the armv4t and/or
lack of -gnueabihf from the bad default target in a
14.3-RELEASE context.


===
Mark Millard
marklmi at yahoo.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.