[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:
committed by
GitHub
parent
b89853b504
commit
4371c79d45
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
17
libc/include/elf.h.def
Normal 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
17
libc/include/link.h.def
Normal 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
|
||||
@@ -289,3 +289,9 @@ add_macro_header(
|
||||
HDR
|
||||
dlfcn-macros.h
|
||||
)
|
||||
|
||||
add_macro_header(
|
||||
elf_macros
|
||||
HDR
|
||||
elf-macros.h
|
||||
)
|
||||
|
||||
18
libc/include/llvm-libc-macros/elf-macros.h
Normal file
18
libc/include/llvm-libc-macros/elf-macros.h
Normal 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
|
||||
@@ -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
|
||||
|
||||
8
libc/newhdrgen/yaml/elf.yaml
Normal file
8
libc/newhdrgen/yaml/elf.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
header: elf.h
|
||||
standards:
|
||||
- Linux
|
||||
macros: []
|
||||
types: []
|
||||
enums: []
|
||||
objects: []
|
||||
functions: []
|
||||
8
libc/newhdrgen/yaml/link.yaml
Normal file
8
libc/newhdrgen/yaml/link.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
header: link.h
|
||||
standards:
|
||||
- Linux
|
||||
macros: []
|
||||
types: []
|
||||
enums: []
|
||||
objects: []
|
||||
functions: []
|
||||
Reference in New Issue
Block a user