Hi Pádraig,

On AIX the following test fails:

    $ make TESTS=tests/misc/stdbuf.sh check
    [...]
    FAIL: tests/misc/stdbuf.sh
    [...]

This is because AIX does not support the LD_PRELOAD environment
variable. Copying the text from their docs [1]:

    The LDR_PRELOAD and LDR_PRELOAD64 environment variables make it
    possible for a process to preload shared libraries. The LDR_PRELOAD
    environment variable is for 32-bit processes, and the LDR_PRELOAD64
    environment variable is for 64-bit processes.

The attached patch fixes it.

Not sure if this warrants a NEWS entry. I'll let you decide.

Collin

[1] 
https://www.ibm.com/docs/en/aix/7.3.0?topic=techniques-preloaded-shared-libraries

>From ab3a7c93c5e4dd40f998e944b52e7de1d2f50390 Mon Sep 17 00:00:00 2001
Message-ID: <ab3a7c93c5e4dd40f998e944b52e7de1d2f50390.1750643298.git.collin.fu...@gmail.com>
From: Collin Funk <collin.fu...@gmail.com>
Date: Sun, 22 Jun 2025 18:13:36 -0700
Subject: [PATCH] stdbuf: support AIX

* src/stdbuf.c (set_LD_PRELOAD): Use the AIX specific environment
variables LDR_PRELOAD or LDR_PRELOAD64.
---
 src/stdbuf.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/stdbuf.c b/src/stdbuf.c
index ba4246838..9fa9d01f4 100644
--- a/src/stdbuf.c
+++ b/src/stdbuf.c
@@ -192,6 +192,9 @@ set_LD_PRELOAD (void)
   int ret;
 #ifdef __APPLE__
   char const *preload_env = "DYLD_INSERT_LIBRARIES";
+#elif defined _AIX
+  char const *preload_env = (sizeof (void *) < 8
+                             ? "LDR_PRELOAD" : "LDR_PRELOAD64");
 #else
   char const *preload_env = "LD_PRELOAD";
 #endif
-- 
2.49.0

Reply via email to