Re: [BUG?] macOS (Intel) build warnings: "ranlib: file … has no symbols" for aarch64 objects

Nathan Bossart <nathandbossart@gmail.com>

From: Nathan Bossart <nathandbossart@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: John Naylor <johncnaylorls@gmail.com>, Peter Eisentraut <peter@eisentraut.org>, Zhang Mingli <zmlpostgres@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-28T14:09:09Z
Lists: pgsql-hackers

Attachments

On Tue, Apr 28, 2026 at 09:29:41AM -0400, Tom Lane wrote:
> If we do care, a low-tech solution could be to have a dummy symbol
> declared in each file, along the lines of
> 
> #if HAVE_X86_64_POPCNTQ
> // code for popcntq case
> #elif HAVE_FROBNITZ
> // code for frobnitz case
> ...
> #else
> /* prevent linker complaints about empty module */
> extern int pg_cpu_x86_dummy_variable;
> int	pg_cpu_x86_dummy_variable = 0;
> #endif
> 
> Actually then we'd not need to change the build systems either...

I've been trying to avoid doing that, but it's a far simpler solution, and
in theory it should fix the problem for all platforms, too.  So, it's
probably the way to go.

-- 
nathan

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Suppress "has no symbols" linker warnings on macOS.

  2. Fix two error messages in extended_stats_funcs.c