mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 18:07:34 +00:00
Use modern C++ attributes instead of __attribute__ voodoo.
This is quite nice, although I wish [[gnu::always_inline]] implied inline. Also "gnu::" is kind of a wart, but whatcha gonna do.
This commit is contained in:
parent
fbcc8ab840
commit
022f7790db
34 changed files with 99 additions and 124 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
__BEGIN_DECLS
|
||||
|
||||
void __assertion_failed(const char* msg, const char* file, unsigned line, const char* func) __attribute__ ((noreturn));
|
||||
[[noreturn]] void __assertion_failed(const char* msg, const char* file, unsigned line, const char* func);
|
||||
|
||||
#define assert(expr) ((expr) ? (void)0 : __assertion_failed(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__))
|
||||
#define CRASH() do { asm volatile("ud2"); } while(0)
|
||||
|
|
14
LibC/ctype.h
14
LibC/ctype.h
|
@ -4,41 +4,41 @@
|
|||
|
||||
__BEGIN_DECLS
|
||||
|
||||
ALWAYS_INLINE int isascii(int ch)
|
||||
[[gnu::always_inline]] inline int isascii(int ch)
|
||||
{
|
||||
return (ch & ~0x7f) == 0;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE int isspace(int ch)
|
||||
[[gnu::always_inline]] inline int isspace(int ch)
|
||||
{
|
||||
return ch == ' ' || ch == '\f' || ch == '\n' || ch == '\r' || ch == '\t' || ch == '\v';
|
||||
}
|
||||
|
||||
ALWAYS_INLINE int islower(int c)
|
||||
[[gnu::always_inline]] inline int islower(int c)
|
||||
{
|
||||
return c >= 'a' && c <= 'z';
|
||||
}
|
||||
|
||||
ALWAYS_INLINE int isupper(int c)
|
||||
[[gnu::always_inline]] inline int isupper(int c)
|
||||
{
|
||||
return c >= 'A' && c <= 'Z';
|
||||
}
|
||||
|
||||
ALWAYS_INLINE int tolower(int c)
|
||||
[[gnu::always_inline]] inline int tolower(int c)
|
||||
{
|
||||
if (isupper(c))
|
||||
return c | 0x20;
|
||||
return c;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE int toupper(int c)
|
||||
[[gnu::always_inline]] inline int toupper(int c)
|
||||
{
|
||||
if (islower(c))
|
||||
return c & ~0x20;
|
||||
return c;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE int isdigit(int c)
|
||||
[[gnu::always_inline]] inline int isdigit(int c)
|
||||
{
|
||||
return c >= '0' && c <= '9';
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ int closedir(DIR* dirp)
|
|||
return rc;
|
||||
}
|
||||
|
||||
struct sys_dirent {
|
||||
struct [[gnu::packed]] sys_dirent {
|
||||
ino_t ino;
|
||||
byte file_type;
|
||||
size_t namelen;
|
||||
|
@ -44,7 +44,7 @@ struct sys_dirent {
|
|||
{
|
||||
return sizeof(ino_t) + sizeof(byte) + sizeof(size_t) + sizeof(char) * namelen;
|
||||
}
|
||||
} __attribute__ ((packed));
|
||||
};
|
||||
|
||||
dirent* readdir(DIR* dirp)
|
||||
{
|
||||
|
|
|
@ -3,15 +3,17 @@
|
|||
#include <Kernel/Syscall.h>
|
||||
#include <AK/StringImpl.h>
|
||||
|
||||
extern "C" int main(int, char**);
|
||||
extern "C" {
|
||||
|
||||
int main(int, char**);
|
||||
|
||||
int errno;
|
||||
char** environ;
|
||||
|
||||
extern "C" void __malloc_init();
|
||||
extern "C" void __stdio_init();
|
||||
void __malloc_init();
|
||||
void __stdio_init();
|
||||
|
||||
extern "C" int _start()
|
||||
int _start()
|
||||
{
|
||||
errno = 0;
|
||||
|
||||
|
@ -39,8 +41,9 @@ epilogue:
|
|||
return 20150614;
|
||||
}
|
||||
|
||||
extern "C" void __cxa_pure_virtual() NORETURN;
|
||||
extern "C" void __cxa_pure_virtual()
|
||||
[[noreturn]] void __cxa_pure_virtual()
|
||||
{
|
||||
ASSERT_NOT_REACHED();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,16 +9,16 @@ __BEGIN_DECLS
|
|||
#define EXIT_FAILURE 1
|
||||
#define MB_CUR_MAX 1
|
||||
|
||||
void* malloc(size_t) __MALLOC;
|
||||
[[gnu::malloc, gnu::returns_nonnull, gnu::alloc_size(1)]] void* malloc(size_t);
|
||||
[[gnu::malloc, gnu::returns_nonnull, gnu::alloc_size(1, 2)]] void* calloc(size_t nmemb, size_t);
|
||||
void free(void*);
|
||||
void* calloc(size_t nmemb, size_t);
|
||||
void* realloc(void *ptr, size_t);
|
||||
[[gnu::returns_nonnull]] void* realloc(void *ptr, size_t);
|
||||
char* getenv(const char* name);
|
||||
int atoi(const char*);
|
||||
long atol(const char*);
|
||||
void qsort(void* base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
|
||||
void exit(int status) __NORETURN;
|
||||
void abort() __NORETURN;
|
||||
[[noreturn]] void exit(int status);
|
||||
[[noreturn]] void abort();
|
||||
char* ptsname(int fd);
|
||||
int ptsname_r(int fd, char* buffer, size_t);
|
||||
int abs(int);
|
||||
|
|
|
@ -2,10 +2,6 @@
|
|||
|
||||
#define _POSIX_VERSION 200809L
|
||||
|
||||
#define ALWAYS_INLINE inline __attribute__ ((always_inline))
|
||||
#define __NORETURN __attribute__ ((noreturn))
|
||||
#define __MALLOC __attribute__ ((malloc))
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define __BEGIN_DECLS extern "C" {
|
||||
#define __END_DECLS }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue