Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 644048 | Differences between
and this patch

Collapse All | Expand All

(-)a/libattr/Makemodule.am (-4 / +1 lines)
Lines 8-14 LT_CURRENT = 2 Link Here
8
LT_AGE = 1
8
LT_AGE = 1
9
LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
9
LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
10
10
11
libattr_la_DEPENDENCIES = exports libattr/libattr.lds
11
libattr_la_DEPENDENCIES = exports
12
libattr_la_SOURCES = \
12
libattr_la_SOURCES = \
13
	libattr/attr_copy_action.c \
13
	libattr/attr_copy_action.c \
14
	libattr/attr_copy_check.c \
14
	libattr/attr_copy_check.c \
Lines 20-26 libattr_la_SOURCES = \ Link Here
20
libattr_la_CFLAGS = -include libattr/libattr.h
20
libattr_la_CFLAGS = -include libattr/libattr.h
21
libattr_la_LDFLAGS = \
21
libattr_la_LDFLAGS = \
22
	-Wl,--version-script,$(top_srcdir)/exports \
22
	-Wl,--version-script,$(top_srcdir)/exports \
23
	-Wl,$(top_srcdir)/libattr/libattr.lds \
24
	-version-info $(LTVERSION)
23
	-version-info $(LTVERSION)
25
26
EXTRA_DIST += libattr/libattr.lds
(-)a/libattr/libattr.lds (-12 lines)
Lines 1-12 Link Here
1
"fgetxattr@ATTR_1.0" = libattr_fgetxattr;
2
"flistxattr@ATTR_1.0" = libattr_flistxattr;
3
"fremovexattr@ATTR_1.0" = libattr_fremovexattr;
4
"fsetxattr@ATTR_1.0" = libattr_fsetxattr;
5
"getxattr@ATTR_1.0" = libattr_getxattr;
6
"lgetxattr@ATTR_1.0" = libattr_lgetxattr;
7
"listxattr@ATTR_1.0" = libattr_listxattr;
8
"llistxattr@ATTR_1.0" = libattr_llistxattr;
9
"lremovexattr@ATTR_1.0" = libattr_lremovexattr;
10
"lsetxattr@ATTR_1.0" = libattr_lsetxattr;
11
"removexattr@ATTR_1.0" = libattr_removexattr;
12
"setxattr@ATTR_1.0" = libattr_setxattr;
(-)a/libattr/syscalls.c (-1 / +33 lines)
Lines 26-31 Link Here
26
#include <sys/syscall.h>
26
#include <sys/syscall.h>
27
#include <sys/xattr.h>
27
#include <sys/xattr.h>
28
28
29
/*
30
 * Versioning of compat symbols:
31
 * prefer symver attribute if available (since gcc 10),
32
 * fall back to traditional .symver asm directive otherwise.
33
 */
34
#ifdef __has_attribute
35
# if __has_attribute(symver)
36
#  define SYMVER(cn, vn) __typeof(cn) cn __attribute__((symver(vn)))
37
# elif __has_attribute(no_reorder)
38
   /*
39
    * Avoid wrong partitioning with older gcc and LTO. May not work reliably
40
    * with all versions; use -flto-partition=none if you encounter problems.
41
    */
42
#  define SYMVER(cn, vn) __typeof(cn) cn __attribute__((noreorder)); \
43
			 __asm__(".symver " #cn "," vn)
44
# endif
45
#endif
46
#ifndef SYMVER
47
#  define SYMVER(cn, vn) __asm__(".symver " #cn "," vn)
48
#endif
49
29
#ifdef HAVE_VISIBILITY_ATTRIBUTE
50
#ifdef HAVE_VISIBILITY_ATTRIBUTE
30
# pragma GCC visibility push(default)
51
# pragma GCC visibility push(default)
31
#endif
52
#endif
Lines 35-100 int libattr_setxattr(const char *path, const char *name, Link Here
35
{
56
{
36
	return syscall(__NR_setxattr, path, name, value, size, flags);
57
	return syscall(__NR_setxattr, path, name, value, size, flags);
37
}
58
}
59
SYMVER(libattr_setxattr, "setxattr@ATTR_1.0");
38
60
39
int libattr_lsetxattr(const char *path, const char *name,
61
int libattr_lsetxattr(const char *path, const char *name,
40
		      void *value, size_t size, int flags)
62
		      void *value, size_t size, int flags)
41
{
63
{
42
	return syscall(__NR_lsetxattr, path, name, value, size, flags);
64
	return syscall(__NR_lsetxattr, path, name, value, size, flags);
43
}
65
}
66
SYMVER(libattr_lsetxattr, "lsetxattr@ATTR_1.0");
44
67
45
int libattr_fsetxattr(int filedes, const char *name,
68
int libattr_fsetxattr(int filedes, const char *name,
46
		      void *value, size_t size, int flags)
69
		      void *value, size_t size, int flags)
47
{
70
{
48
	return syscall(__NR_fsetxattr, filedes, name, value, size, flags);
71
	return syscall(__NR_fsetxattr, filedes, name, value, size, flags);
49
}
72
}
73
SYMVER(libattr_fsetxattr, "fsetxattr@ATTR_1.0");
50
74
51
ssize_t libattr_getxattr(const char *path, const char *name,
75
ssize_t libattr_getxattr(const char *path, const char *name,
52
			 void *value, size_t size)
76
			 void *value, size_t size)
53
{
77
{
54
	return syscall(__NR_getxattr, path, name, value, size);
78
	return syscall(__NR_getxattr, path, name, value, size);
55
}
79
}
80
SYMVER(libattr_getxattr, "getxattr@ATTR_1.0");
56
81
57
ssize_t libattr_lgetxattr(const char *path, const char *name,
82
ssize_t libattr_lgetxattr(const char *path, const char *name,
58
			  void *value, size_t size)
83
			  void *value, size_t size)
59
{
84
{
60
	return syscall(__NR_lgetxattr, path, name, value, size);
85
	return syscall(__NR_lgetxattr, path, name, value, size);
61
}
86
}
87
SYMVER(libattr_lgetxattr, "lgetxattr@ATTR_1.0");
62
88
63
ssize_t libattr_fgetxattr(int filedes, const char *name,
89
ssize_t libattr_fgetxattr(int filedes, const char *name,
64
			  void *value, size_t size)
90
			  void *value, size_t size)
65
{
91
{
66
	return syscall(__NR_fgetxattr, filedes, name, value, size);
92
	return syscall(__NR_fgetxattr, filedes, name, value, size);
67
}
93
}
94
SYMVER(libattr_fgetxattr, "fgetxattr@ATTR_1.0");
68
95
69
ssize_t libattr_listxattr(const char *path, char *list, size_t size)
96
ssize_t libattr_listxattr(const char *path, char *list, size_t size)
70
{
97
{
71
	return syscall(__NR_listxattr, path, list, size);
98
	return syscall(__NR_listxattr, path, list, size);
72
}
99
}
100
SYMVER(libattr_listxattr, "listxattr@ATTR_1.0");
73
101
74
ssize_t libattr_llistxattr(const char *path, char *list, size_t size)
102
ssize_t libattr_llistxattr(const char *path, char *list, size_t size)
75
{
103
{
76
	return syscall(__NR_llistxattr, path, list, size);
104
	return syscall(__NR_llistxattr, path, list, size);
77
}
105
}
106
SYMVER(libattr_llistxattr, "llistxattr@ATTR_1.0");
78
107
79
ssize_t libattr_flistxattr(int filedes, char *list, size_t size)
108
ssize_t libattr_flistxattr(int filedes, char *list, size_t size)
80
{
109
{
81
	return syscall(__NR_flistxattr, filedes, list, size);
110
	return syscall(__NR_flistxattr, filedes, list, size);
82
}
111
}
112
SYMVER(libattr_flistxattr, "flistxattr@ATTR_1.0");
83
113
84
int libattr_removexattr(const char *path, const char *name)
114
int libattr_removexattr(const char *path, const char *name)
85
{
115
{
86
	return syscall(__NR_removexattr, path, name);
116
	return syscall(__NR_removexattr, path, name);
87
}
117
}
118
SYMVER(libattr_removexattr, "removexattr@ATTR_1.0");
88
119
89
int libattr_lremovexattr(const char *path, const char *name)
120
int libattr_lremovexattr(const char *path, const char *name)
90
{
121
{
91
	return syscall(__NR_lremovexattr, path, name);
122
	return syscall(__NR_lremovexattr, path, name);
92
}
123
}
124
SYMVER(libattr_lremovexattr, "lremovexattr@ATTR_1.0");
93
125
94
int libattr_fremovexattr(int filedes, const char *name)
126
int libattr_fremovexattr(int filedes, const char *name)
95
{
127
{
96
	return syscall(__NR_fremovexattr, filedes, name);
128
	return syscall(__NR_fremovexattr, filedes, name);
97
}
129
}
130
SYMVER(libattr_fremovexattr, "fremovexattr@ATTR_1.0");
98
131
99
#ifdef HAVE_VISIBILITY_ATTRIBUTE
132
#ifdef HAVE_VISIBILITY_ATTRIBUTE
100
# pragma GCC visibility pop
133
# pragma GCC visibility pop
101
- 

Return to bug 644048