[libc] Reapply ELF/LINK header changes (#102765)

This is based on @izaakschroeder previous patch but I only select macro
definitions for now. We need these definitions for VDSO work, which has
been delayed for a very long time.

Co-authored-by: Izaak Schroeder <izaak.schroeder@gmail.com>
This commit is contained in:
Schrodinger ZHU Yifan
2024-08-13 08:20:37 -07:00
committed by GitHub
parent b89853b504
commit 4371c79d45
10 changed files with 104 additions and 2 deletions

View File

@@ -2,6 +2,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.assert
libc.include.ctype
libc.include.dlfcn
libc.include.elf
libc.include.errno
libc.include.features
libc.include.fenv
@@ -9,6 +10,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.stdint
libc.include.inttypes
libc.include.limits
libc.include.link
libc.include.math
libc.include.pthread
libc.include.signal

View File

@@ -3,6 +3,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.ctype
libc.include.dirent
libc.include.dlfcn
libc.include.elf
libc.include.errno
libc.include.fcntl
libc.include.features
@@ -11,6 +12,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.stdint
libc.include.inttypes
libc.include.limits
libc.include.link
libc.include.math
libc.include.pthread
libc.include.sched

View File

@@ -420,6 +420,23 @@ add_header_macro(
.llvm-libc-types.posix_spawn_file_actions_t
)
add_gen_header(
link
DEF_FILE link.h.def
GEN_HDR link.h
DEPENDS
.llvm_libc_common_h
.llvm-libc-macros.link_macros
)
add_gen_header(
elf
DEF_FILE elf.h.def
GEN_HDR elf.h
DEPENDS
.llvm-libc-macros.elf_macros
)
# TODO: Not all platforms will have a include/sys directory. Add the sys
# directory and the targets for sys/*.h files conditional to the OS requiring
# them.

17
libc/include/elf.h.def Normal file
View File

@@ -0,0 +1,17 @@
//===-- System V header elf.h ---------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_ELF_H
#define LLVM_LIBC_ELF_H
#include "__llvm-libc-common.h"
#include "llvm-libc-macros/elf-macros.h"
%%public_api()
#endif // LLVM_LIBC_ELF_H

17
libc/include/link.h.def Normal file
View File

@@ -0,0 +1,17 @@
//===-- GNU header link.h -------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_LINK_H
#define LLVM_LIBC_LINK_H
#include "__llvm-libc-common.h"
#include "llvm-libc-macros/link-macros.h"
%%public_api()
#endif // LLVM_LIBC_LINK_H

View File

@@ -289,3 +289,9 @@ add_macro_header(
HDR
dlfcn-macros.h
)
add_macro_header(
elf_macros
HDR
elf-macros.h
)

View File

@@ -0,0 +1,18 @@
//===-- Definition of macros from elf.h -----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_MACROS_ELF_MACROS_H
#define LLVM_LIBC_MACROS_ELF_MACROS_H
#if __has_include(<linux/elf.h>)
#include <linux/elf.h>
#else
#error "cannot use <sys/elf.h> without proper system headers."
#endif
#endif // LLVM_LIBC_MACROS_ELF_MACROS_H

View File

@@ -6,8 +6,15 @@
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_MACROS_LINK_MACROS_H
#define LLVM_LIBC_MACROS_LINK_MACROS_H
#include "elf-macros.h"
#ifdef __LP64__
#define ElfW(type) Elf64_ ## type
#define ElfW(type) Elf64_##type
#else
#define ElfW(type) Elf32_ ## type
#define ElfW(type) Elf32_##type
#endif
#endif

View File

@@ -0,0 +1,8 @@
header: elf.h
standards:
- Linux
macros: []
types: []
enums: []
objects: []
functions: []

View File

@@ -0,0 +1,8 @@
header: link.h
standards:
- Linux
macros: []
types: []
enums: []
objects: []
functions: []