From 88ad4c20524c7d338b9514934dfc72cfbf611f6b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 7 Jun 2015 18:20:42 +0300 Subject: Improve a bit make files. --- .gitignore | 1 - Makefile | 4 ++ Makefile.am | 1 - src/Makefile.am | 1 + test.sh | 9 +--- test/Makefile | 6 ++- test/test2.h | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 166 insertions(+), 11 deletions(-) create mode 100644 Makefile create mode 100644 test/test2.h diff --git a/.gitignore b/.gitignore index 62ece06..76f2e50 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ po/remove-potcdate.* po/*.po~ # files created by configure -/Makefile /src/Makefile config.h config.log diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cb32c9c --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +.PHONY: test + +test: + cd test && make diff --git a/Makefile.am b/Makefile.am index 7b61ae6..f79aa8b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,7 +6,6 @@ SUBDIRS = src #EXTRA_DIST = test: - cp src/.libs/libastdumper.so src/.libs/astdumper.so cd ../test && make .PHONY: test diff --git a/src/Makefile.am b/src/Makefile.am index fef2688..d6a091c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -41,4 +41,5 @@ libastdumper_la_LDFLAGS = ${SHARED_LDFLAGS} libastdumper_la_CXXFLAGS = ${SHARED_CXXFLAGS} all-local: libastdumper.la + cp .libs/libastdumper.so .libs/astdumper.so echo done diff --git a/test.sh b/test.sh index 29c57bb..8d7d6ab 100755 --- a/test.sh +++ b/test.sh @@ -1,9 +1,4 @@ #!/bin/bash -cd build -make test - -#cd test -#g++-5 -fplugin=../build/src/.libs/libastdumper.so test1.c 2>../test.txt - -#cd .. +cd test +make diff --git a/test/Makefile b/test/Makefile index 87da8a7..6a85c35 100644 --- a/test/Makefile +++ b/test/Makefile @@ -5,12 +5,14 @@ CC := gcc-5 CXX := g++-5 PLUGIN = ../build/src/.libs/astdumper.so -CMD = ${CXX} -fplugin=${PLUGIN} -fplugin-arg-astdumper-command=${1} ${2} 2>../${3} +CMD = ${CXX} -fplugin=${PLUGIN} -fplugin-arg-astdumper-command=${1} ${2} -o a.out 2>../${3} -all: test1 clean +all: test1 test2 clean clean: @rm a.out 2>/dev/null || true test1: $(call CMD,dump,test1.c,test.txt) +test2: + $(call CMD,dump,test2.h,test2.txt) diff --git a/test/test2.h b/test/test2.h new file mode 100644 index 0000000..37e020c --- /dev/null +++ b/test/test2.h @@ -0,0 +1,155 @@ +/* Macros to swap the order of bytes in integer values. + Copyright (C) 1997-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +//#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H +//# error "Never use directly; include instead." +//#endif + +#ifndef _BITS_BYTESWAP_H +#define _BITS_BYTESWAP_H 1 + +#include +#include +#include + +/* Swap bytes in 16 bit value. */ +#define __bswap_constant_16(x) \ + ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) + +/* Get __bswap_16. */ +#include + +/* Swap bytes in 32 bit value. */ +#define __bswap_constant_32(x) \ + ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ + (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) + +#ifdef __GNUC__ +# if __GNUC_PREREQ (4, 3) +static __inline unsigned int +__bswap_32 (unsigned int __bsx) +{ + return __builtin_bswap32 (__bsx); +} +# elif __GNUC__ >= 2 +# if __WORDSIZE == 64 || (defined __i486__ || defined __pentium__ \ + || defined __pentiumpro__ || defined __pentium4__ \ + || defined __k8__ || defined __athlon__ \ + || defined __k6__ || defined __nocona__ \ + || defined __core2__ || defined __geode__ \ + || defined __amdfam10__) +/* To swap the bytes in a word the i486 processors and up provide the + `bswap' opcode. On i386 we have to use three instructions. */ +# define __bswap_32(x) \ + (__extension__ \ + ({ unsigned int __v, __x = (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_32 (__x); \ + else \ + __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \ + __v; })) +# else +# define __bswap_32(x) \ + (__extension__ \ + ({ unsigned int __v, __x = (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_32 (__x); \ + else \ + __asm__ ("rorw $8, %w0;" \ + "rorl $16, %0;" \ + "rorw $8, %w0" \ + : "=r" (__v) \ + : "0" (__x) \ + : "cc"); \ + __v; })) +# endif +# else +# define __bswap_32(x) \ + (__extension__ \ + ({ unsigned int __x = (x); __bswap_constant_32 (__x); })) +# endif +#else +static __inline unsigned int +__bswap_32 (unsigned int __bsx) +{ + return __bswap_constant_32 (__bsx); +} +#endif + + +#if __GNUC_PREREQ (2, 0) +/* Swap bytes in 64 bit value. */ +# define __bswap_constant_64(x) \ + (__extension__ ((((x) & 0xff00000000000000ull) >> 56) \ + | (((x) & 0x00ff000000000000ull) >> 40) \ + | (((x) & 0x0000ff0000000000ull) >> 24) \ + | (((x) & 0x000000ff00000000ull) >> 8) \ + | (((x) & 0x00000000ff000000ull) << 8) \ + | (((x) & 0x0000000000ff0000ull) << 24) \ + | (((x) & 0x000000000000ff00ull) << 40) \ + | (((x) & 0x00000000000000ffull) << 56))) + +# if __GNUC_PREREQ (4, 3) +static __inline __uint64_t +__bswap_64 (__uint64_t __bsx) +{ + return __builtin_bswap64 (__bsx); +} +# elif __WORDSIZE == 64 +# define __bswap_64(x) \ + (__extension__ \ + ({ __uint64_t __v, __x = (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_64 (__x); \ + else \ + __asm__ ("bswap %q0" : "=r" (__v) : "0" (__x)); \ + __v; })) +# else +# define __bswap_64(x) \ + (__extension__ \ + ({ union { __extension__ __uint64_t __ll; \ + unsigned int __l[2]; } __w, __r; \ + if (__builtin_constant_p (x)) \ + __r.__ll = __bswap_constant_64 (x); \ + else \ + { \ + __w.__ll = (x); \ + __r.__l[0] = __bswap_32 (__w.__l[1]); \ + __r.__l[1] = __bswap_32 (__w.__l[0]); \ + } \ + __r.__ll; })) +# endif +#else +# define __bswap_constant_64(x) \ + ((((x) & 0xff00000000000000ull) >> 56) \ + | (((x) & 0x00ff000000000000ull) >> 40) \ + | (((x) & 0x0000ff0000000000ull) >> 24) \ + | (((x) & 0x000000ff00000000ull) >> 8) \ + | (((x) & 0x00000000ff000000ull) << 8) \ + | (((x) & 0x0000000000ff0000ull) << 24) \ + | (((x) & 0x000000000000ff00ull) << 40) \ + | (((x) & 0x00000000000000ffull) << 56)) + +static __inline __uint64_t +__bswap_64 (__uint64_t __bsx) +{ + return __bswap_constant_64 (__bsx); +} +#endif + +#endif /* _BITS_BYTESWAP_H */ -- cgit v1.2.3-70-g09d2