diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-07 18:20:42 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-07 18:20:42 +0300 |
commit | 88ad4c20524c7d338b9514934dfc72cfbf611f6b (patch) | |
tree | 565255282b517b32953983008606e8d1a9b2680a | |
parent | 736c29dbf42250e8e4d1aab7953ddb57742ba67d (diff) | |
download | paranucker-88ad4c20524c7d338b9514934dfc72cfbf611f6b.tar.gz paranucker-88ad4c20524c7d338b9514934dfc72cfbf611f6b.tar.bz2 paranucker-88ad4c20524c7d338b9514934dfc72cfbf611f6b.tar.xz paranucker-88ad4c20524c7d338b9514934dfc72cfbf611f6b.zip |
Improve a bit make files.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rwxr-xr-x | test.sh | 9 | ||||
-rw-r--r-- | test/Makefile | 6 | ||||
-rw-r--r-- | test/test2.h | 155 |
7 files changed, 166 insertions, 11 deletions
@@ -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 @@ -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 + <http://www.gnu.org/licenses/>. */ + +//#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H +//# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." +//#endif + +#ifndef _BITS_BYTESWAP_H +#define _BITS_BYTESWAP_H 1 + +#include <features.h> +#include <bits/types.h> +#include <bits/wordsize.h> + +/* Swap bytes in 16 bit value. */ +#define __bswap_constant_16(x) \ + ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) + +/* Get __bswap_16. */ +#include <bits/byteswap-16.h> + +/* 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 */ |