tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [PATCH] Current GNU libc: Declare htonl() via <arpa/inet.h>



On Mon, 28 Oct 2024 at 22:19:40 +0900, Izumi Tsutsui wrote:
| Would be nice if somebody would comment on this (verified to not break
  | a build on NetBSD-current) or commit it.

Looks reasonable to me, I will get to it later tonight.

Maybe we can replace it with N_SETMAGIC() in <sys/exec_aout.h>
(that already uses htobe32()):

---
#define N_SETMAGIC(ex,mag,mid,flag) \
   ((ex).a_midmag = htobe32((uint32_t) \
   ((((flag)&0x3f)<<26)|(((mid)&0x03ff)<<16)|(((mag)&0xffff)))))
---

We should also update another htonl() leftover in comment
in <sys/exec_aout.h>?

---
/*
* Header prepended to each a.out file.
* only manipulate the a_midmag field via the
* N_SETMAGIC/N_GET{MAGIC,MID,FLAG} macros below.
*/
struct exec {
	unsigned long a_midmag;	/* htonl(flags<<26 | mid<<16 | magic) */
	unsigned long a_text;	/* text segment size */

For mkubootimage.c (which is what I've looked at), I think it makes
most sense to convert htonl(3) and ntohl(3) use to their equivalents
found in sys/endian.h. mkubootimage.c already uses bswap32(3),
le64toh(3), and more anyway. I see all of the necessary sys/endian.h
functions are provided by NetBSD compat, so making these changes
indeed results in a successful tools build on Fedora 40 inclusive of
mkubootimage(1). (I've been sitting on this change, hadn't got around
to emailing about it and/or committing. But I can do so soon.)

Regards,

Dave


Home | Main Index | Thread Index | Old Index