> On 8 Jun 2026, at 14:02, Pietro Monteiro <[email protected]> wrote:
>
> The Algol 68 frontend adds a section with information on exported
> modes and procedures to libraries and object files. Instead of
> erroring out when encountering a Mach-O library keep reading it so the
> frontend can find the exports section.
>
> libiberty/ChangeLog:
>
> * simple-object-mach-o.c (MACH_O_MH_DYLIB): New definition.
> (simple_object_mach_o_match):
OK from a Darwin PoV (but I’m not sure if I can OK libiberty changes).
Note that, in principle, we could also cover MH_BUNDLE (which often
have neither a suffix nor ‘lib’ at the start). However, let’s cross that
bridge when someone has a use-case.
Iain
>
> Signed-off-by: Pietro Monteiro <[email protected]>
> ---
> Regtested on x86_64-darwin. Ok for trunk and backport to gcc-16 branch?
>
> libiberty/simple-object-mach-o.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/libiberty/simple-object-mach-o.c
> b/libiberty/simple-object-mach-o.c
> index c6dfe697497..aaa9cbf3a06 100644
> --- a/libiberty/simple-object-mach-o.c
> +++ b/libiberty/simple-object-mach-o.c
> @@ -78,6 +78,7 @@ struct mach_o_header_64
> /* For filetype field in header. */
>
> #define MACH_O_MH_OBJECT 0x01
> +#define MACH_O_MH_DYLIB 0x06
>
> /* A Mach-O file is a list of load commands. This is the header of a
> load command. */
> @@ -312,9 +313,9 @@ simple_object_mach_o_match (
> b = &buf[0];
>
> filetype = (*fetch_32) (b + offsetof (struct mach_o_header_32, filetype));
> - if (filetype != MACH_O_MH_OBJECT)
> + if (!(filetype == MACH_O_MH_OBJECT || filetype == MACH_O_MH_DYLIB))
> {
> - *errmsg = "Mach-O file is not object file";
> + *errmsg = "Mach-O file is neither object file nor dylib";
> *err = 0;
> return NULL;
> }
> --
> 2.43.0
>