summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiam Middlebrook <lmiddlebrook@nvidia.com>2018-11-08 09:39:11 -0800
committerLiam Middlebrook <lmiddlebrook@nvidia.com>2018-11-08 09:39:11 -0800
commit38a2a00ea709f51d558ef03d6f0ba6e6b16b6722 (patch)
tree11fdcc6dc11c8127a56d005a10aa5d2582ca7e11
parent7a5da3253cb012a38aeb8b598765b19554d90169 (diff)
415.13415.13
-rw-r--r--Makefile78
-rw-r--r--README2
-rw-r--r--dist-files.mk9
-rw-r--r--files.c92
-rw-r--r--files.h1
-rw-r--r--install-from-cwd.c32
-rw-r--r--log.c10
-rw-r--r--manifest.c142
-rw-r--r--misc.c224
-rw-r--r--misc.h1
-rw-r--r--nvidia-installer.1.m428
-rw-r--r--nvidia-installer.c26
-rw-r--r--nvidia-installer.h21
-rw-r--r--option_table.h23
-rw-r--r--tls_test.c47
-rwxr-xr-xtls_test_Linux-x86bin3220 -> 0 bytes
-rwxr-xr-xtls_test_Linux-x86_64bin5064 -> 0 bytes
-rw-r--r--tls_test_dso.c7
-rwxr-xr-xtls_test_dso_Linux-x86.sobin3384 -> 0 bytes
-rwxr-xr-xtls_test_dso_Linux-x86_64.sobin4920 -> 0 bytes
-rw-r--r--version.mk2
21 files changed, 100 insertions, 645 deletions
diff --git a/Makefile b/Makefile
index d196370..03d4427 100644
--- a/Makefile
+++ b/Makefile
@@ -56,13 +56,6 @@ NVIDIA_INSTALLER_PROGRAM_NAME = "nvidia-installer"
NVIDIA_INSTALLER_VERSION := $(NVIDIA_VERSION)
-# We only need to run the TLS test on Linux-x86 and Linux-x86_64
-ifeq ($(findstring Linux-x86,$(TARGET_OS)-$(TARGET_ARCH)),)
- NEED_TLS_TEST =
-else
- NEED_TLS_TEST = 1
-endif
-
NCURSES_UI_C = ncurses-ui.c
NCURSES_UI_O = $(call BUILD_OBJECT_LIST,$(NCURSES_UI_C))
NCURSES_UI_SO = $(OUTPUTDIR)/nvidia-installer-ncurses-ui.so
@@ -71,28 +64,6 @@ NCURSES6_UI_O = $(OUTPUTDIR)/ncurses6-ui.o
NCURSES6_UI_SO = $(OUTPUTDIR)/nvidia-installer-ncurses6-ui.so
NCURSES6_UI_SO_C = $(OUTPUTDIR)/g_$(notdir $(NCURSES6_UI_SO:.so=.c))
-ifneq ($(NEED_TLS_TEST),)
- TLS_TEST_C = $(OUTPUTDIR)/g_tls_test.c
- TLS_TEST_DSO_C = $(OUTPUTDIR)/g_tls_test_dso.c
- TLS_TEST = tls_test_$(TARGET_OS)-$(TARGET_ARCH)
- TLS_TEST_DSO_SO = tls_test_dso_$(TARGET_OS)-$(TARGET_ARCH).so
-
- TLS_TEST_32_C = $(OUTPUTDIR)/g_tls_test_32.c
- TLS_TEST_DSO_32_C = $(OUTPUTDIR)/g_tls_test_dso_32.c
- TLS_TEST_32 = tls_test_$(TARGET_OS)-x86
- TLS_TEST_DSO_SO_32 = tls_test_dso_$(TARGET_OS)-x86.so
-else
- TLS_TEST_C =
- TLS_TEST_DSO_C =
- TLS_TEST =
- TLS_TEST_DSO_SO =
-
- TLS_TEST_32_C =
- TLS_TEST_DSO_32_C =
- TLS_TEST_32 =
- TLS_TEST_DSO_SO_32 =
-endif
-
RTLD_TEST_C = $(OUTPUTDIR)/g_rtld_test.c
RTLD_TEST = $(OUTPUTDIR)/rtld_test
@@ -114,14 +85,13 @@ OPTIONS_1_INC = $(OUTPUTDIR)/options.1.inc
ifeq ($(TARGET_OS)-$(TARGET_ARCH), Linux-x86_64)
TLS_MODEL = initial-exec
PIC = -fPIC
- # Only Linux-x86_64 needs the tls_test_32 files
- COMPAT_32_SRC = $(TLS_TEST_32_C) $(TLS_TEST_DSO_32_C) \
- $(RTLD_TEST_32_C)
+ # Only Linux-x86_64 needs the rtld_test_32 file
+ COMPAT_32_SRC = $(RTLD_TEST_32_C)
else
# So far all other platforms use local-exec
TLS_MODEL = local-exec
PIC =
- # Non-Linux-x86_64 platforms do not include the tls_test_32 files
+ # Non-Linux-x86_64 platforms do not include the rtld_test_32 file
COMPAT_32_SRC =
endif
@@ -148,8 +118,7 @@ NCURSES_UI_SO_SRC = $(NCURSES_UI_SO_C)
NCURSES_UI_SO_SRC += $(if $(BUILD_NCURSES6),$(NCURSES6_UI_SO_C),)
CFLAGS += $(if $(BUILD_NCURSES6),-DNV_INSTALLER_NCURSES6,)
-INSTALLER_SRC = $(SRC) $(NCURSES_UI_SO_SRC) $(TLS_TEST_C) $(TLS_TEST_DSO_C) \
- $(RTLD_TEST_C) $(COMPAT_32_SRC)
+INSTALLER_SRC = $(SRC) $(NCURSES_UI_SO_SRC) $(RTLD_TEST_C) $(COMPAT_32_SRC)
INSTALLER_OBJS = $(call BUILD_OBJECT_LIST,$(INSTALLER_SRC))
@@ -157,7 +126,6 @@ common_cflags = -I.
common_cflags += -imacros $(CONFIG_H)
common_cflags += -I $(OUTPUTDIR)
common_cflags += -I $(COMMON_UTILS_DIR)
-common_cflags += $(if $(NEED_TLS_TEST),-DNV_TLS_TEST)
CFLAGS += $(common_cflags)
@@ -249,22 +217,6 @@ $(NCURSES_UI_SO_C): $(GEN_UI_ARRAY) $(NCURSES_UI_SO)
$(NCURSES6_UI_SO_C): $(GEN_UI_ARRAY) $(NCURSES6_UI_SO)
$(call quiet_cmd,GEN_UI_ARRAY) $(NCURSES6_UI_SO) ncurses6_ui_array > $@
-ifneq ($(NEED_TLS_TEST),)
- $(TLS_TEST_C): $(GEN_UI_ARRAY) $(TLS_TEST)
- $(call quiet_cmd,GEN_UI_ARRAY) $(TLS_TEST) tls_test_array > $@
-
- $(TLS_TEST_DSO_C): $(GEN_UI_ARRAY) $(TLS_TEST_DSO_SO)
- $(call quiet_cmd,GEN_UI_ARRAY) \
- $(TLS_TEST_DSO_SO) tls_test_dso_array > $@
-
- $(TLS_TEST_32_C): $(GEN_UI_ARRAY) $(TLS_TEST_32)
- $(call quiet_cmd,GEN_UI_ARRAY) $(TLS_TEST_32) tls_test_array_32 > $@
-
- $(TLS_TEST_DSO_32_C): $(GEN_UI_ARRAY) $(TLS_TEST_DSO_SO_32)
- $(call quiet_cmd,GEN_UI_ARRAY) \
- $(TLS_TEST_DSO_SO_32) tls_test_dso_array_32 > $@
-endif
-
$(RTLD_TEST_C): $(GEN_UI_ARRAY) $(RTLD_TEST)
$(call quiet_cmd,GEN_UI_ARRAY) $(RTLD_TEST) rtld_test_array > $@
@@ -307,28 +259,6 @@ clean clobber:
rm -rf $(OUTPUTDIR)
-##############################################################################
-# rule to rebuild tls_test and tls_test_dso; a precompiled tls_test
-# and tls_test_dso is distributed with nvidia_installer because they
-# require a recent toolchain to build.
-##############################################################################
-
-rebuild_tls_test: tls_test.c
- gcc -Wall -O2 -fomit-frame-pointer -o $(TLS_TEST) -ldl $<
- strip $(TLS_TEST)
-
-rebuild_tls_test_dso: tls_test_dso.c
- gcc -Wall -O2 $(PIC) -fomit-frame-pointer -c $< \
- -ftls-model=$(TLS_MODEL)
- gcc -o $(TLS_TEST_DSO_SO) -shared tls_test_dso.o
- strip $(TLS_TEST_DSO_SO)
-
-# dummy rule to override implicit rule that builds tls_test from
-# tls_test.c
-
-tls_test: tls_test.c
- touch $@
-
# rule to build a native rtld_test; a precompiled Linux-x86 rtld_test is
# distributed with nvidia-installer to simplify Linux-x86_64 builds.
diff --git a/README b/README
index dbd855e..6a117de 100644
--- a/README
+++ b/README
@@ -115,8 +115,6 @@ is now:
- search in the usr/src/nv/precompiled directory of the .run file,
if no match found, then
- - search on the ftp site, if no match found, then
-
- give up and just build the kernel module yourself
diff --git a/dist-files.mk b/dist-files.mk
index a085691..3e67123 100644
--- a/dist-files.mk
+++ b/dist-files.mk
@@ -64,15 +64,6 @@ DIST_FILES += README
DIST_FILES += dist-files.mk
DIST_FILES += rtld_test_Linux-x86
-
-DIST_FILES += tls_test_Linux-x86
-DIST_FILES += tls_test_Linux-x86_64
-
-DIST_FILES += tls_test_dso_Linux-x86.so
-DIST_FILES += tls_test_dso_Linux-x86_64.so
-
-DIST_FILES += tls_test.c
-DIST_FILES += tls_test_dso.c
DIST_FILES += rtld_test.c
DIST_FILES += nvidia-installer.1.m4
diff --git a/files.c b/files.c
index b63e45a..d6a536c 100644
--- a/files.c
+++ b/files.c
@@ -396,91 +396,6 @@ char *write_temp_file(Options *op, const int len,
} /* write_temp_file() */
-
-/*
- * select_tls_class() - determine which tls class should be installed
- * on the user's machine; if tls_test() fails, just install the
- * classic tls libraries. If tls_test() passes, install both OpenGL
- * sets, but only the new tls libglx.
- */
-
-void select_tls_class(Options *op, Package *p)
-{
-#if defined(NV_TLS_TEST)
- int i;
-
- if (!tls_test(op, FALSE)) {
- op->which_tls = (op->which_tls & TLS_LIB_TYPE_FORCED);
- op->which_tls |= TLS_LIB_CLASSIC_TLS;
-
- /*
- * tls libraries will not run on this system; just install the
- * classic OpenGL libraries: clear the FILE_TYPE of any
- * FILE_TLS_CLASS_NEW package entries.
- */
-
- ui_log(op, "Installing classic TLS OpenGL libraries.");
-
- for (i = 0; i < p->num_entries; i++) {
- if ((p->entries[i].tls_class == FILE_TLS_CLASS_NEW) &&
- (p->entries[i].compat_arch == FILE_COMPAT_ARCH_NATIVE)) {
- invalidate_package_entry(&(p->entries[i]));
- }
- }
- } else {
- op->which_tls = (op->which_tls & TLS_LIB_TYPE_FORCED);
- op->which_tls |= TLS_LIB_NEW_TLS;
-
- /*
- * tls libraries will run on this system: install both the
- * classic and new TLS libraries.
- */
-
- ui_log(op, "Installing both new and classic TLS OpenGL libraries.");
- }
-
-#if defined(NV_X86_64)
-
- /*
- * If we are installing on amd64, then we need to perform a
- * similar test for the 32bit compatibility libraries
- */
-
- if (!tls_test(op, TRUE)) {
- op->which_tls_compat32 = (op->which_tls_compat32 & TLS_LIB_TYPE_FORCED);
- op->which_tls_compat32 |= TLS_LIB_CLASSIC_TLS;
-
- /*
- * 32bit tls libraries will not run on this system; just
- * install the classic OpenGL libraries: clear the FILE_TYPE
- * of any tls_class==NEW && compat_arch==COMPAT32 package entries.
- */
-
- ui_log(op, "Installing classic TLS 32bit OpenGL libraries.");
-
- for (i = 0; i < p->num_entries; i++) {
- if ((p->entries[i].tls_class == FILE_TLS_CLASS_NEW) &&
- (p->entries[i].compat_arch == FILE_COMPAT_ARCH_COMPAT32)) {
- invalidate_package_entry(&(p->entries[i]));
- }
- }
- } else {
- op->which_tls_compat32 = (op->which_tls_compat32 & TLS_LIB_TYPE_FORCED);
- op->which_tls_compat32 |= TLS_LIB_NEW_TLS;
-
- /*
- * 32bit tls libraries will run on this system: install both
- * the classic and new TLS libraries.
- */
-
- ui_log(op, "Installing both new and classic TLS 32bit "
- "OpenGL libraries.");
- }
-
-#endif /* NV_X86_64 */
-#endif /* NV_TLS_TEST */
-} /* select_tls_class() */
-
/*
* check_libGLX_indirect_target() - Helper function for
* check_libGLX_indirect_links.
@@ -699,7 +614,6 @@ int set_destinations(Options *op, Package *p)
break;
case FILE_TYPE_TLS_LIB:
- case FILE_TYPE_TLS_SYMLINK:
if (p->entries[i].compat_arch == FILE_COMPAT_ARCH_COMPAT32) {
prefix = op->compat32_prefix;
dir = op->compat32_libdir;
@@ -1135,7 +1049,6 @@ static void add_kernel_module_helper(Options *op, Package *p,
NULL, /* target */
dst,
FILE_TYPE_KERNEL_MODULE,
- FILE_TLS_CLASS_NONE,
FILE_COMPAT_ARCH_NONE,
FILE_GLVND_DONT_CARE,
0644);
@@ -2068,7 +1981,6 @@ void process_libGL_la_files(Options *op, Package *p)
NULL, /* target */
NULL, /* dst */
FILE_TYPE_LIBGL_LA,
- p->entries[i].tls_class,
p->entries[i].compat_arch,
p->entries[i].glvnd,
p->entries[i].mode);
@@ -2145,7 +2057,6 @@ void process_dot_desktop_files(Options *op, Package *p)
NULL, /* target */
NULL, /* dst */
FILE_TYPE_DOT_DESKTOP,
- p->entries[i].tls_class,
p->entries[i].compat_arch,
p->entries[i].glvnd,
p->entries[i].mode);
@@ -2226,7 +2137,6 @@ void process_dkms_conf(Options *op, Package *p)
NULL, /* target */
NULL, /* dst */
FILE_TYPE_DKMS_CONF,
- p->entries[i].tls_class,
p->entries[i].compat_arch,
p->entries[i].glvnd,
p->entries[i].mode);
@@ -2277,7 +2187,6 @@ void process_vulkan_icd_file(Options *op, Package *p)
NULL /* target */,
NULL /* dst */,
FILE_TYPE_VULKAN_ICD_JSON,
- vkIcdJsonEntry->tls_class,
vkIcdJsonEntry->compat_arch,
vkIcdJsonEntry->glvnd,
vkIcdJsonEntry->mode);
@@ -3160,7 +3069,6 @@ void add_libgl_abi_symlink(Options *op, Package *p)
target,
nvstrcat(usrlib, libgl, NULL),
FILE_TYPE_OPENGL_SYMLINK,
- FILE_TLS_CLASS_NONE,
FILE_COMPAT_ARCH_NATIVE,
FILE_GLVND_DONT_CARE,
0000);
diff --git a/files.h b/files.h
index 39cd180..b14b8b4 100644
--- a/files.h
+++ b/files.h
@@ -29,7 +29,6 @@ int copy_file(Options *op, const char *srcfile,
const char *dstfile, mode_t mode);
char *write_temp_file(Options *op, const int len,
const unsigned char *data, mode_t perm);
-void select_tls_class(Options *op, Package *p); /* XXX move? */
int set_destinations(Options *op, Package *p); /* XXX move? */
int get_prefixes(Options *op); /* XXX move? */
void add_kernel_modules_to_package(Options *op, Package *p);
diff --git a/install-from-cwd.c b/install-from-cwd.c
index 0d65ee4..bddea00 100644
--- a/install-from-cwd.c
+++ b/install-from-cwd.c
@@ -96,7 +96,7 @@ int install_from_cwd(Options *op)
HookScriptStatus res;
static const char* edit_your_xf86config =
- "Please update your XF86Config or xorg.conf file as "
+ "Please update your xorg.conf file as "
"appropriate; see the file /usr/share/doc/"
"NVIDIA_GLX-1.0/README.txt for details.";
@@ -230,13 +230,6 @@ int install_from_cwd(Options *op)
if (!get_prefixes(op)) goto failed;
/*
- * select the appropriate TLS class, modifying the package as
- * necessary.
- */
-
- select_tls_class(op, p);
-
- /*
* if the package contains any libGL.la or .desktop files,
* process them (perform some search and replacing so
* that they reflect the correct installation path, etc)
@@ -923,24 +916,6 @@ static Package *parse_manifest (Options *op)
op->compat32_files_packaged = TRUE;
}
- /* some libs/symlinks have a class field */
-
- entry.tls_class = FILE_TLS_CLASS_NONE;
-
- if (entry.caps.has_tls_class) {
- nvfree(flag);
- flag = read_next_word(c, &c);
- if (!flag) goto entry_done;
-
- if (strcmp(flag, "CLASSIC") == 0)
- entry.tls_class = FILE_TLS_CLASS_CLASSIC;
- else if (strcmp(flag, "NEW") == 0)
- entry.tls_class = FILE_TLS_CLASS_NEW;
- else {
- goto entry_done;
- }
- }
-
/* some file types have a path field, or inherit their paths */
if (entry.caps.has_path) {
@@ -1027,7 +1002,6 @@ static Package *parse_manifest (Options *op)
entry.target,
entry.dst,
entry.type,
- entry.tls_class,
entry.compat_arch,
entry.glvnd,
entry.mode);
@@ -1089,7 +1063,6 @@ void add_package_entry(Package *p,
char *target,
char *dst,
PackageEntryFileType type,
- PackageEntryFileTlsClass tls_class,
PackageEntryFileCompatArch compat_arch,
PackageEntryFileGLVND glvnd,
mode_t mode)
@@ -1110,7 +1083,6 @@ void add_package_entry(Package *p,
p->entries[n].target = target;
p->entries[n].dst = dst;
p->entries[n].type = type;
- p->entries[n].tls_class = tls_class;
p->entries[n].mode = mode;
p->entries[n].caps = get_file_type_capabilities(type);
p->entries[n].compat_arch = compat_arch;
@@ -1476,7 +1448,6 @@ generate_done:
NULL, /* target */
NULL, /* dst */
FILE_TYPE_MODULE_SIGNING_KEY,
- FILE_TLS_CLASS_NONE,
FILE_COMPAT_ARCH_NONE,
FILE_GLVND_DONT_CARE,
0444);
@@ -1509,7 +1480,6 @@ generate_done:
NULL, /* target */
NULL, /* dst */
FILE_TYPE_MODULE_SIGNING_KEY,
- FILE_TLS_CLASS_NONE,
FILE_COMPAT_ARCH_NONE,
FILE_GLVND_DONT_CARE,
0400);
diff --git a/log.c b/log.c
index 20b3c2c..5ac26b5 100644
--- a/log.c
+++ b/log.c
@@ -42,16 +42,6 @@ static FILE *log_file_stream;
#define STRSTR(x) ((x) ? (x) : "(not specified)")
-#define TLSSTR(x) ({ \
- const char *__tls_str = NULL; \
- switch (x) { \
- case FORCE_CLASSIC_TLS: __tls_str = "classic"; break; \
- case FORCE_NEW_TLS: __tls_str = "elf-tls"; break; \
- default: __tls_str = "(not specified)"; \
- } \
- __tls_str; \
-})
-
#define SELINUXSTR(x) ({ \
const char *__selinux_str = NULL; \
switch (x) { \
diff --git a/manifest.c b/manifest.c
index baad96b..cebc749 100644
--- a/manifest.c
+++ b/manifest.c
@@ -26,7 +26,6 @@
#define ENTRY(_name, \
_has_arch, \
- _has_tls_class, \
_installable, \
_has_path, \
_is_symlink, \
@@ -40,7 +39,6 @@
#_name , FILE_TYPE_ ## _name , \
{ \
.has_arch = _has_arch, \
- .has_tls_class = _has_tls_class, \
.installable = _installable, \
.has_path = _has_path, \
.is_symlink = _is_symlink, \
@@ -63,77 +61,75 @@ static const struct {
} packageEntryFileTypeTable[] = {
/*
- * glvnd_select ------------------------------------------------+
- * inherit_path ---------------------------------------------+ |
- * is_conflicting ------------------------------------------+ | |
- * is_temporary ---------------------------------------+ | | |
- * is_opengl ------------------------------------+ | | | |
- * is_shared_lib ---------------------------------+ | | | | |
- * is_symlink ------------------------------+ | | | | | |
- * has_path ---------------------------+ | | | | | | |
- * installable ------------------------+ | | | | | | | |
- * has_tls_class ---------------------+ | | | | | | | | |
- * has_arch ------------------+ | | | | | | | | | |
- * | | | | | | | | | | |
+ * glvnd_select ---------------------------------------------+
+ * inherit_path ------------------------------------------+ |
+ * is_conflicting ---------------------------------------+ | |
+ * is_temporary ------------------------------------+ | | |
+ * is_opengl ---------------------------------+ | | | |
+ * is_shared_lib ------------------------------+ | | | | |
+ * is_symlink ---------------------------+ | | | | | |
+ * has_path ------------------------+ | | | | | | |
+ * installable ---------------------+ | | | | | | | |
+ * has_arch ------------------+ | | | | | | | | |
+ * | | | | | | | | | |
*/
- { ENTRY(KERNEL_MODULE_SRC, F, F, T, F, F, F, F, F, T, T, F) },
- { ENTRY(KERNEL_MODULE, F, F, T, F, F, F, F, F, T, F, F) },
- { ENTRY(CUDA_ICD, F, F, T, F, F, F, F, F, T, F, F) },
- { ENTRY(OPENGL_LIB, T, F, T, F, F, T, T, F, T, F, F) },
- { ENTRY(CUDA_LIB, T, F, T, T, F, T, F, F, T, F, F) },
- { ENTRY(OPENCL_LIB, T, F, T, T, F, T, F, F, T, F, F) },
- { ENTRY(OPENCL_WRAPPER_LIB, T, F, T, T, F, T, F, F, F, F, F) },
- { ENTRY(OPENCL_LIB_SYMLINK, T, F, F, T, T, F, F, F, T, F, F) },
- { ENTRY(OPENCL_WRAPPER_SYMLINK, T, F, F, T, T, F, F, F, F, F, F) },
- { ENTRY(LIBGL_LA, T, F, T, F, F, F, T, T, T, F, F) },
- { ENTRY(TLS_LIB, T, T, T, T, F, T, T, F, T, F, F) },
- { ENTRY(UTILITY_LIB, T, F, T, F, F, T, F, F, T, F, F) },
- { ENTRY(DOCUMENTATION, F, F, T, T, F, F, F, F, T, F, F) },
- { ENTRY(APPLICATION_PROFILE, F, F, T, T, F, F, F, F, T, F, F) },
- { ENTRY(MANPAGE, F, F, T, T, F, F, F, F, T, F, F) },
- { ENTRY(EXPLICIT_PATH, F, F, T, T, F, F, F, F, T, F, F) },
- { ENTRY(OPENGL_SYMLINK, T, F, F, F, T, F, T, F, T, F, F) },
- { ENTRY(CUDA_SYMLINK, T, F, F, T, T, F, F, F, T, F, F) },
- { ENTRY(TLS_SYMLINK, T, T, F, T, T, F, T, F, T, F, F) },
- { ENTRY(UTILITY_LIB_SYMLINK, T, F, F, F, T, F, F, F, T, F, F) },
- { ENTRY(INSTALLER_BINARY, F, F, T, F, F, F, F, F, T, F, F) },
- { ENTRY(UTILITY_BINARY, F, F, T, F, F, F, F, F, T, F, F) },
- { ENTRY(UTILITY_BIN_SYMLINK, F, F, F, F, T, F, F, F, T, F, F) },
- { ENTRY(DOT_DESKTOP, F, F, T, T, F, F, F, T, T, F, F) },
- { ENTRY(XMODULE_SHARED_LIB, F, F, T, T, F, T, F, F, T, F, F) },
- { ENTRY(XMODULE_SYMLINK, F, F, F, T, T, F, F, F, T, F, F) },
- { ENTRY(GLX_MODULE_SHARED_LIB, F, F, T, T, F, T, T, F, T, F, F) },
- { ENTRY(GLX_MODULE_SYMLINK, F, F, F, T, T, F, T, F, T, F, F) },
- { ENTRY(XMODULE_NEWSYM, F, F, F, T, T, F, F, F, T, F, F) },
- { ENTRY(VDPAU_LIB, T, F, T, T, F, T, F, F, T, F, F) },
- { ENTRY(VDPAU_SYMLINK, T, F, F, T, T, F, F, F, T, F, F) },
- { ENTRY(NVCUVID_LIB, T, F, T, F, F, T, F, F, T, F, F) },
- { ENTRY(NVCUVID_LIB_SYMLINK, T, F, F, F, T, F, F, F, T, F, F) },
- { ENTRY(ENCODEAPI_LIB, T, F, T, F, F, T, F, F, T, F, F) },
- { ENTRY(ENCODEAPI_LIB_SYMLINK, T, F, F, F, T, F, F, F, T, F, F) },
- { ENTRY(VGX_LIB, F, F, T, F, F, T, F, F, T, F, F) },
- { ENTRY(VGX_LIB_SYMLINK, F, F, F, F, T, F, F, F, T, F, F) },
- { ENTRY(GRID_LIB, F, F, T, T, F, T, F, F, T, F, F) },
- { ENTRY(GRID_LIB_SYMLINK, F, F, F, T, T, F, F, F, T, F, F) },
- { ENTRY(NVIDIA_MODPROBE, F, F, T, T, F, F, F, F, T, F, F) },
- { ENTRY(NVIDIA_MODPROBE_MANPAGE, F, F, T, T, F, F, F, F, T, F, F) },
- { ENTRY(MODULE_SIGNING_KEY, F, F, T, F, F, F, F, T, T, F, F) },
- { ENTRY(NVIFR_LIB, T, F, T, F, F, T, F, F, T, F, F) },
- { ENTRY(NVIFR_LIB_SYMLINK, T, F, F, F, T, F, F, F, T, F, F) },
- { ENTRY(XORG_OUTPUTCLASS_CONFIG, F, F, T, F, F, F, F, F, T, F, F) },
- { ENTRY(DKMS_CONF , F, F, T, F, F, F, F, T, T, T, F) },
- { ENTRY(GLVND_LIB, T, F, T, F, F, T, T, F, T, F, F) },
- { ENTRY(GLVND_SYMLINK, T, F, F, F, T, F, T, F, T, F, F) },
- { ENTRY(GLX_CLIENT_LIB, T, F, T, F, F, T, T, F, T, F, T) },
- { ENTRY(GLX_CLIENT_SYMLINK, T, F, F, F, T, F, T, F, T, F, T) },
- { ENTRY(VULKAN_ICD_JSON, F, F, T, F, F, F, F, F, T, F, F) },
- { ENTRY(GLVND_EGL_ICD_JSON, F, F, T, F, F, F, T, F, T, F, F) },
- { ENTRY(EGL_CLIENT_LIB, T, F, T, F, F, T, T, F, T, F, T) },
- { ENTRY(EGL_CLIENT_SYMLINK, T, F, F, F, T, F, T, F, T, F, T) },
- { ENTRY(EGL_EXTERNAL_PLATFORM_JSON, F, F, T, F, F, F, T, F, T, F, F) },
- { ENTRY(FLEXERA_LIB, F, F, T, T, F, T, F, F, F, F, F) },
- { ENTRY(FLEXERA_LIB_SYMLINK, F, F, F, T, T, F, F, F, F, F, F) },
- { ENTRY(ALLOCATOR_JSON, F, F, T, F, F, F, F, F, T, F, F) },
+ { ENTRY(KERNEL_MODULE_SRC, F, T, F, F, F, F, F, T, T, F) },
+ { ENTRY(KERNEL_MODULE, F, T, F, F, F, F, F, T, F, F) },
+ { ENTRY(CUDA_ICD, F, T, F, F, F, F, F, T, F, F) },
+ { ENTRY(OPENGL_LIB, T, T, F, F, T, T, F, T, F, F) },
+ { ENTRY(CUDA_LIB, T, T, T, F, T, F, F, T, F, F) },
+ { ENTRY(OPENCL_LIB, T, T, T, F, T, F, F, T, F, F) },
+ { ENTRY(OPENCL_WRAPPER_LIB, T, T, T, F, T, F, F, F, F, F) },
+ { ENTRY(OPENCL_LIB_SYMLINK, T, F, T, T, F, F, F, T, F, F) },
+ { ENTRY(OPENCL_WRAPPER_SYMLINK, T, F, T, T, F, F, F, F, F, F) },
+ { ENTRY(LIBGL_LA, T, T, F, F, F, T, T, T, F, F) },
+ { ENTRY(TLS_LIB, T, T, T, F, T, T, F, T, F, F) },
+ { ENTRY(UTILITY_LIB, T, T, F, F, T, F, F, T, F, F) },
+ { ENTRY(DOCUMENTATION, F, T, T, F, F, F, F, T, F, F) },
+ { ENTRY(APPLICATION_PROFILE, F, T, T, F, F, F, F, T, F, F) },
+ { ENTRY(MANPAGE, F, T, T, F, F, F, F, T, F, F) },
+ { ENTRY(EXPLICIT_PATH, F, T, T, F, F, F, F, T, F, F) },
+ { ENTRY(OPENGL_SYMLINK, T, F, F, T, F, T, F, T, F, F) },
+ { ENTRY(CUDA_SYMLINK, T, F, T, T, F, F, F, T, F, F) },
+ { ENTRY(UTILITY_LIB_SYMLINK, T, F, F, T, F, F, F, T, F, F) },
+ { ENTRY(INSTALLER_BINARY, F, T, F, F, F, F, F, T, F, F) },
+ { ENTRY(UTILITY_BINARY, F, T, F, F, F, F, F, T, F, F) },
+ { ENTRY(UTILITY_BIN_SYMLINK, F, F, F, T, F, F, F, T, F, F) },
+ { ENTRY(DOT_DESKTOP, F, T, T, F, F, F, T, T, F, F) },
+ { ENTRY(XMODULE_SHARED_LIB, F, T, T, F, T, F, F, T, F, F) },
+ { ENTRY(XMODULE_SYMLINK, F, F, T, T, F, F, F, T, F, F) },
+ { ENTRY(GLX_MODULE_SHARED_LIB, F, T, T, F, T, T, F, T, F, F) },
+ { ENTRY(GLX_MODULE_SYMLINK, F, F, T, T, F, T, F, T, F, F) },
+ { ENTRY(XMODULE_NEWSYM, F, F, T, T, F, F, F, T, F, F) },
+ { ENTRY(VDPAU_LIB, T, T, T, F, T, F, F, T, F, F) },
+ { ENTRY(VDPAU_SYMLINK, T, F, T, T, F, F, F, T, F, F) },
+ { ENTRY(NVCUVID_LIB, T, T, F, F, T, F, F, T, F, F) },
+ { ENTRY(NVCUVID_LIB_SYMLINK, T, F, F, T, F, F, F, T, F, F) },
+ { ENTRY(ENCODEAPI_LIB, T, T, F, F, T, F, F, T, F, F) },
+ { ENTRY(ENCODEAPI_LIB_SYMLINK, T, F, F, T, F, F, F, T, F, F) },
+ { ENTRY(VGX_LIB, F, T, F, F, T, F, F, T, F, F) },
+ { ENTRY(VGX_LIB_SYMLINK, F, F, F, T, F, F, F, T, F, F) },
+ { ENTRY(GRID_LIB, F, T, T, F, T, F, F, T, F, F) },
+ { ENTRY(GRID_LIB_SYMLINK, F, F, T, T, F, F, F, T, F, F) },
+ { ENTRY(NVIDIA_MODPROBE, F, T, T, F, F, F, F, T, F, F) },
+ { ENTRY(NVIDIA_MODPROBE_MANPAGE, F, T, T, F, F, F, F, T, F, F) },
+ { ENTRY(MODULE_SIGNING_KEY, F, T, F, F, F, F, T, T, F, F) },
+ { ENTRY(NVIFR_LIB, T, T, F, F, T, F, F, T, F, F) },
+ { ENTRY(NVIFR_LIB_SYMLINK, T, F, F, T, F, F, F, T, F, F) },
+ { ENTRY(XORG_OUTPUTCLASS_CONFIG, F, T, F, F, F, F, F, T, F, F) },
+ { ENTRY(DKMS_CONF , F, T, F, F, F, F, T, T, T, F) },
+ { ENTRY(GLVND_LIB, T, T, F, F, T, T, F, T, F, F) },
+ { ENTRY(GLVND_SYMLINK, T, F, F, T, F, T, F, T, F, F) },
+ { ENTRY(GLX_CLIENT_LIB, T, T, F, F, T, T, F, T, F, T) },
+ { ENTRY(GLX_CLIENT_SYMLINK, T, F, F, T, F, T, F, T, F, T) },
+ { ENTRY(VULKAN_ICD_JSON, F, T, F, F, F, F, F, T, F, F) },
+ { ENTRY(GLVND_EGL_ICD_JSON, F, T, F, F, F, T, F, T, F, F) },
+ { ENTRY(EGL_CLIENT_LIB, T, T, F, F, T, T, F, T, F, T) },
+ { ENTRY(EGL_CLIENT_SYMLINK, T, F, F, T, F, T, F, T, F, T) },
+ { ENTRY(EGL_EXTERNAL_PLATFORM_JSON, F, T, F, F, F, T, F, T, F, F) },
+ { ENTRY(FLEXERA_LIB, F, T, T, F, T, F, F, F, F, F) },
+ { ENTRY(FLEXERA_LIB_SYMLINK, F, F, T, T, F, F, F, F, F, F) },
+ { ENTRY(ALLOCATOR_JSON, F, T, F, F, F, F, F, T, F, F) },
};
/*
@@ -145,7 +141,7 @@ PackageEntryFileCapabilities get_file_type_capabilities(
)
{
int i;
- PackageEntryFileCapabilities nullCaps = { F, F, F, F, F, F, F, F, F, F, F };
+ PackageEntryFileCapabilities nullCaps = { F, F, F, F, F, F, F, F, F, F };
for (i = 0; i < ARRAY_LEN(packageEntryFileTypeTable); i++) {
if (type == packageEntryFileTypeTable[i].type) {
diff --git a/misc.c b/misc.c
index 290bf82..ffdf79c 100644
--- a/misc.c
+++ b/misc.c
@@ -503,18 +503,12 @@ int find_system_utils(Options *op)
}
}
- /* If no program called `X` is found; try searching for known X servers */
+ /* If no program called `X` is found; try searching for Xorg */
if (op->utils[XSERVER] == NULL) {
- static const char* xservers[] = { "Xorg", "XFree86" };
- int i;
-
- for (i = 0; i < ARRAY_LEN(xservers); i++) {
- op->utils[XSERVER] = find_system_util(xservers[i]);
- if (op->utils[XSERVER]) {
- ui_expert(op, "found `%s` : `%s`",
- xservers[i], op->utils[XSERVER]);
- break;
- }
+ op->utils[XSERVER] = find_system_util("Xorg");
+ if (op->utils[XSERVER]) {
+ ui_expert(op, "found `%s` : `%s`",
+ "Xorg", op->utils[XSERVER]);
}
}
@@ -1398,180 +1392,6 @@ int check_installed_file(Options *op, const char *filename,
-#if defined(NV_TLS_TEST)
-/*
- * tls_test() - Starting with glibc 2.3, there is a new thread local
- * storage mechanism. To accomodate this, NVIDIA's OpenGL libraries
- * are built both the "classic" way, and the new way. To determine
- * which set of OpenGL libraries to install, execute the test program
- * stored in tls_test_array. If the program returns 0 we should
- * install the new tls libraries; if it returns anything else, we
- * should install the "classic" libraries.
- *
- * So as to avoid any risk of not being able to find the tls_test
- * binary at run time, the test program is stored as static data
- * inside the installer binary (in the same way that the user
- * interface shared libraries are)... see
- * user_interface.c:extract_user_interface() for details.
- *
- * Return TRUE if the new tls libraries should be installed; FALSE if
- * the old libraries should be used.
- */
-
-/* pull in the array and size from g_tls_test.c */
-
-extern const unsigned char tls_test_array[];
-extern const int tls_test_array_size;
-
-/* pull in the array and size from g_tls_test_dso.c */
-
-extern const unsigned char tls_test_dso_array[];
-extern const int tls_test_dso_array_size;
-
-
-
-#if defined(NV_X86_64)
-
-/* pull in the array and size from g_tls_test_32.c */
-
-extern const unsigned char tls_test_array_32[];
-extern const int tls_test_array_32_size;
-
-/* pull in the array and size from g_tls_test_dso_32.c */
-
-extern const unsigned char tls_test_dso_array_32[];
-extern const int tls_test_dso_array_32_size;
-
-#endif /* NV_X86_64 */
-
-
-/* forward prototype */
-
-static int tls_test_internal(Options *op, int which_tls,
- const unsigned char *test_array,
- const int test_array_size,
- const unsigned char *dso_test_array,
- const int dso_test_array_size);
-
-
-
-int tls_test(Options *op, int compat_32_libs)
-{
- if (compat_32_libs) {
-
-#if defined(NV_X86_64)
- return tls_test_internal(op, op->which_tls_compat32,
- tls_test_array_32,
- tls_test_array_32_size,
- tls_test_dso_array_32,
- tls_test_dso_array_32_size);
-#else
- return FALSE;
-#endif /* NV_X86_64 */
-
- } else {
- return tls_test_internal(op, op->which_tls,
- tls_test_array,
- tls_test_array_size,
- tls_test_dso_array,
- tls_test_dso_array_size);
- }
-} /* tls_test */
-
-
-
-/*
- * tls_test_internal() - this is the routine that does all the work to
- * write the tests to file and execute them; the caller (tls_test())
- * just selects which array data is used as the test.
- */
-
-static int tls_test_internal(Options *op, int which_tls,
- const unsigned char *test_array,
- const int test_array_size,
- const unsigned char *test_dso_array,
- const int test_dso_array_size)
-{
- int ret = FALSE;
- char *tmpfile = NULL, *dso_tmpfile = NULL, *cmd = NULL;
-
- /* allow commandline options to bypass this test */
-
- if (which_tls == FORCE_NEW_TLS) return TRUE;
- if (which_tls == FORCE_CLASSIC_TLS) return FALSE;
-
- /* check that we have the test program */
-
- if ((test_array == NULL) ||
- (test_array_size == 0) ||
- (test_dso_array == NULL) ||
- (test_dso_array_size == 0)) {
- ui_warn(op, "The thread local storage test program is not "
- "present; assuming classic tls.");
- return FALSE;
- }
-
- /* write the tls_test data to tmp files */
-
- tmpfile = write_temp_file(op, test_array_size, test_array,
- S_IRUSR|S_IWUSR|S_IXUSR);
-
- if (!tmpfile) {
- ui_warn(op, "Unable to create temporary file for thread local "
- "storage test program (%s); assuming classic tls.",
- strerror(errno));
- goto done;
- }
-
- dso_tmpfile = write_temp_file(op, test_dso_array_size,
- test_dso_array,
- S_IRUSR|S_IWUSR|S_IXUSR);
- if (!dso_tmpfile) {
- ui_warn(op, "Unable to create temporary file for thread local "
- "storage test program (%s); assuming classic tls.",
- strerror(errno));
- goto done;
- }
-
- if (!set_security_context(op, dso_tmpfile, op->selinux_chcon_type)) {
- /* We are on a system with SELinux and the chcon command failed.
- * Assume that the system is recent enough to have the new TLS
- */
- ui_warn(op, "Unable to set the security context on file %s; "
- "assuming new tls.",
- dso_tmpfile);
- ret = TRUE;
- goto done;
- }
-
- /* run the test */
-
- cmd = nvstrcat(tmpfile, " ", dso_tmpfile, NULL);
-
- ret = run_command(op, cmd, NULL, FALSE, 0, TRUE);
-
- ret = ((ret == 0) ? TRUE : FALSE);
-
- done:
-
- if (tmpfile) {
- unlink(tmpfile);
- nvfree(tmpfile);
- }
-
- if (dso_tmpfile) {
- unlink(dso_tmpfile);
- nvfree(dso_tmpfile);
- }
-
- if (cmd) nvfree(cmd);
-
- return ret;
-
-} /* test_tls_internal() */
-#endif /* defined(NV_TLS_TEST) */
-
-
/*
* check_runtime_configuration() - In the past, nvidia-installer has
* frequently failed to backup/move all conflicting files prior to
@@ -1602,26 +1422,17 @@ extern const int rtld_test_array_32_size;
/* forward prototype */
static int rtld_test_internal(Options *op, Package *p,
- int which_tls,
const unsigned char *test_array,
const int test_array_size,
int compat_32_libs);
int check_runtime_configuration(Options *op, Package *p)
{
- int ret = TRUE, which_tls, which_tls_compat32;
+ int ret = TRUE;
char *tmpdir = NULL;
char old_cwd[PATH_MAX];
int chdir_success = FALSE;
-#if defined(NV_TLS_TEST)
- which_tls = op->which_tls;
- which_tls_compat32 = op->which_tls_compat32;
-#else
- /* Platforms that don't need the TLS test only support "new" ELF TLS. */
- which_tls = which_tls_compat32 = TLS_LIB_NEW_TLS;
-#endif /* NV_TLS_TEST */
-
ui_status_begin(op, "Running runtime sanity check:", "Checking");
/* chdir to an empty directory to avoid picking up DSOs from the CWD */
@@ -1636,14 +1447,14 @@ int check_runtime_configuration(Options *op, Package *p)
}
#if defined(NV_X86_64)
- ret = rtld_test_internal(op, p, which_tls_compat32,
+ ret = rtld_test_internal(op, p,
rtld_test_array_32,
rtld_test_array_32_size,
TRUE);
#endif /* NV_X86_64 */
if (ret == TRUE) {
- ret = rtld_test_internal(op, p, which_tls,
+ ret = rtld_test_internal(op, p,
rtld_test_array,
rtld_test_array_size,
FALSE);
@@ -1723,7 +1534,6 @@ int is_symbolic_link_to(const char *path, const char *dest)
*/
static int rtld_test_internal(Options *op, Package *p,
- int which_tls,
const unsigned char *test_array,
const int test_array_size,
int compat_32_libs)
@@ -1771,9 +1581,6 @@ static int rtld_test_internal(Options *op, Package *p,
if ((p->entries[i].type != FILE_TYPE_OPENGL_LIB) &&
(p->entries[i].type != FILE_TYPE_TLS_LIB)) {
continue;
- } else if ((which_tls & TLS_LIB_TYPE_FORCED) &&
- (p->entries[i].type == FILE_TYPE_TLS_LIB)) {
- continue;
#if defined(NV_X86_64)
} else if ((p->entries[i].compat_arch == FILE_COMPAT_ARCH_NATIVE)
&& compat_32_libs) {
@@ -1782,12 +1589,6 @@ static int rtld_test_internal(Options *op, Package *p,
&& !compat_32_libs) {
continue;
#endif /* NV_X86_64 */
- } else if ((which_tls == TLS_LIB_NEW_TLS) &&
- (p->entries[i].tls_class == FILE_TLS_CLASS_CLASSIC)) {
- continue;
- } else if ((which_tls == TLS_LIB_CLASSIC_TLS) &&
- (p->entries[i].tls_class == FILE_TLS_CLASS_NEW)) {
- continue;
}
name = nvstrdup(p->entries[i].name);
@@ -1934,7 +1735,8 @@ static int rtld_test_internal(Options *op, Package *p,
* server version.
*/
-static int get_xserver_information(const char *versionString,
+static int get_xserver_information(Options *op,
+ const char *versionString,
int *isModular,
int *supportsOutputClassSection)
{
@@ -1947,8 +1749,8 @@ static int get_xserver_information(const char *versionString,
/* check if this is an XFree86 X server */
if (strstr(versionString, "XFree86 Version")) {
- *isModular = FALSE;
- return TRUE;
+ ui_error(op, "XFree86 is not supported.");
+ return FALSE;
}
@@ -2035,7 +1837,7 @@ void query_xorg_version(Options *op)
* modular
*/
- ret = get_xserver_information(data, &op->modular_xorg,
+ ret = get_xserver_information(op, data, &op->modular_xorg,
&op->xorg_supports_output_class);
/* fall through */
diff --git a/misc.h b/misc.h
index 91b15a1..628fd56 100644
--- a/misc.h
+++ b/misc.h
@@ -75,7 +75,6 @@ void should_install_optional_modules(Options *op, Package *p,
void check_installed_files_from_package(Options *op, Package *p);
int check_installed_file(Options*, const char*, const mode_t, const uint32,
ui_message_func *logwarn);
-int tls_test(Options *op, int compat_32_libs);
int check_runtime_configuration(Options *op, Package *p);
void collapse_multiple_slashes(char *s);
int is_symbolic_link_to(const char *path, const char *dest);
diff --git a/nvidia-installer.1.m4 b/nvidia-installer.1.m4
index 07f1291..e4765bd 100644
--- a/nvidia-installer.1.m4
+++ b/nvidia-installer.1.m4
@@ -1,7 +1,7 @@
dnl This file is to be preprocessed by m4.
changequote([[[, ]]])dnl
define(__OPTIONS__, [[[include([[[options.1.inc]]])dnl]]])dnl
-.\" Copyright (C) 2005-2010 NVIDIA Corporation.
+.\" Copyright (C) 2005-2018 NVIDIA Corporation.
.\"
__HEADER__
.\" Define the URL macro and then load the URL package if it exists.
@@ -59,16 +59,6 @@ In the 'uninstall' mode of operation, all driver files that were installed on th
The uninstall process should restore your filesystem to its state prior to installation.
If you install one NVIDIA __INSTALLER_OS__ graphics driver while another is already installed, this uninstall step is automatically performed on the old driver at the beginning of installation of the new driver.
.PP
-You can also use
-.B nvidia\-installer
-to automatically update to newer drivers.
-.PP
-You can query the latest driver available on NVIDIA's website with the
-.B \-\-latest
-option, or request that the latest driver, if newer than your current driver, be automatically downloaded and installed by specifying the
-.B \-\-update
-commandline option.
-.PP
\fBnvidia\-installer\fR's backend is separate from its user interface; the installer will use an ncurses-based user interface if it can find the correct ncurses library, otherwise, it will fall back to a simple commandline user interface.
To disable use of the ncurses user interface, use the option
.B \-\-ui=none.
@@ -80,7 +70,7 @@ The source code to
is released under the GPL and available here:
.sp
.ti +5
-.URL "ftp://download.nvidia.com/XFree86/nvidia\-installer/"
+.URL "https://download.nvidia.com/XFree86/nvidia\-installer/"
.sp
Patches are welcome.
dnl Call gen-manpage-opts to generate this section.
@@ -134,18 +124,6 @@ or
will be printed in a message informing the user of the presence/availability of the alternate driver installation, and asking the user whether to continue with the installation.
.SH EXAMPLES
.TP
-.B nvidia\-installer \-\-latest
-Connect to NVIDIA's FTP site, and report the latest driver version and the URL to the latest driver file.
-.TP
-.B nvidia\-installer \-\-update
-Connect to NVIDIA's FTP site.
-If a newer version of the driver is available, download and install it.
-Use
-.B \-\-force\-update
-to install the most recent driver even if
-.B \-\-nvidia\-installer
-detects that it is installed already.
-.TP
.B nvidia\-installer \-\-uninstall
Remove the NVIDIA driver and restore files that were overwritten during the install process.
.\" .SH FILES
@@ -159,4 +137,4 @@ NVIDIA Corporation
.BR nvidia-settings (1),
.I /usr/share/doc/NVIDIA_GLX-1.0/README.txt
.SH COPYRIGHT
-Copyright \(co 2005-2010 NVIDIA Corporation.
+Copyright \(co 2005-2018 NVIDIA Corporation.
diff --git a/nvidia-installer.c b/nvidia-installer.c
index 71a9792..8e37d25 100644
--- a/nvidia-installer.c
+++ b/nvidia-installer.c
@@ -323,30 +323,16 @@ static void parse_commandline(int argc, char *argv[], Options *op)
op->tmpdir = strval; break;
case NO_NVIDIA_MODPROBE_OPTION:
op->nvidia_modprobe = FALSE; break;
-#if defined(NV_TLS_TEST)
case FORCE_TLS_OPTION:
- if (strcasecmp(strval, "new") == 0)
- op->which_tls = FORCE_NEW_TLS;
- else if (strcasecmp(strval, "classic") == 0)
- op->which_tls = FORCE_CLASSIC_TLS;
- else {
- nv_error_msg("Invalid parameter for '--force-tls'");
- goto fail;
- }
+ /* This option is no longer used; ignore it. */
+ nv_warning_msg("The '--force-tls' option is deprecated: "
+ "nvidia-installer will ignore this option.");
break;
-#if defined(NV_X86_64)
case FORCE_TLS_COMPAT32_OPTION:
- if (strcasecmp(strval, "new") == 0)
- op->which_tls_compat32 = FORCE_NEW_TLS;
- else if (strcasecmp(strval, "classic") == 0)
- op->which_tls_compat32 = FORCE_CLASSIC_TLS;
- else {
- nv_error_msg("Invalid parameter for '--force-tls-compat32'");
- goto fail;
- }
+ /* This option is no longer used; ignore it. */
+ nv_warning_msg("The '--force-tls-compat32' option is deprecated: "
+ "nvidia-installer will ignore this option.");
break;
-#endif /* NV_X86_64 */
-#endif /* NV_TLS_TEST */
case SANITY_OPTION:
op->sanity = TRUE;
break;
diff --git a/nvidia-installer.h b/nvidia-installer.h
index 1e7e93b..2d27118 100644
--- a/nvidia-installer.h
+++ b/nvidia-installer.h
@@ -107,7 +107,6 @@ typedef enum {
FILE_TYPE_UTILITY_BINARY,
FILE_TYPE_LIBGL_LA,
FILE_TYPE_TLS_LIB,
- FILE_TYPE_TLS_SYMLINK,
FILE_TYPE_UTILITY_LIB,
FILE_TYPE_DOT_DESKTOP,
FILE_TYPE_UTILITY_LIB_SYMLINK,
@@ -186,10 +185,6 @@ typedef struct __options {
int nvidia_modprobe;
int no_questions;
int silent;
-#if defined(NV_TLS_TEST)
- int which_tls;
- int which_tls_compat32;
-#endif /* NV_TLS_TEST */
int sanity;
int add_this_kernel;
int no_backup;
@@ -294,12 +289,6 @@ typedef struct __options {
} Options;
typedef enum {
- FILE_TLS_CLASS_NONE,
- FILE_TLS_CLASS_NEW,
- FILE_TLS_CLASS_CLASSIC,
-} PackageEntryFileTlsClass;
-
-typedef enum {
FILE_COMPAT_ARCH_NONE,
FILE_COMPAT_ARCH_NATIVE,
FILE_COMPAT_ARCH_COMPAT32,
@@ -313,7 +302,6 @@ typedef enum {
typedef struct {
unsigned int has_arch : 1;
- unsigned int has_tls_class : 1;
unsigned int installable : 1;
unsigned int has_path : 1;
unsigned int is_symlink : 1;
@@ -368,7 +356,6 @@ typedef struct __package_entry {
PackageEntryFileCapabilities caps;
PackageEntryFileType type;
- PackageEntryFileTlsClass tls_class;
PackageEntryFileCompatArch compat_arch;
PackageEntryFileGLVND glvnd;
int inherit_path_depth;
@@ -449,17 +436,10 @@ typedef struct __package {
#define NV_LINE_LEN 1024
#define NV_MIN_LINE_LEN 256
-#define TLS_LIB_TYPE_FORCED 0x0001
-#define TLS_LIB_NEW_TLS 0x0002
-#define TLS_LIB_CLASSIC_TLS 0x0004
-
#define SELINUX_DEFAULT 0x0000
#define SELINUX_FORCE_YES 0x0001
#define SELINUX_FORCE_NO 0x0002
-#define FORCE_CLASSIC_TLS (TLS_LIB_CLASSIC_TLS | TLS_LIB_TYPE_FORCED)
-#define FORCE_NEW_TLS (TLS_LIB_NEW_TLS | TLS_LIB_TYPE_FORCED)
-
#define PERM_MASK (S_IRWXU|S_IRWXG|S_IRWXO)
#define PRECOMPILED_PACKAGE_FILENAME "nvidia-precompiled"
@@ -561,7 +541,6 @@ void add_package_entry(Package *p,
char *target,
char *dst,
PackageEntryFileType type,
- PackageEntryFileTlsClass tls_class,
PackageEntryFileCompatArch compat_arch,
PackageEntryFileGLVND glvnd,
mode_t mode);
diff --git a/option_table.h b/option_table.h
index 37fb844..746de4d 100644
--- a/option_table.h
+++ b/option_table.h
@@ -360,26 +360,6 @@ static const NVGetoptOption __options[] = {
"needed if other means of loading the NVIDIA kernel module and creating "
"the NVIDIA device files are unavailable." },
-#if defined(NV_TLS_TEST)
- { "force-tls", FORCE_TLS_OPTION, NVGETOPT_STRING_ARGUMENT, NULL,
- "NVIDIA's OpenGL libraries are compiled with one of two "
- "different thread local storage (TLS) mechanisms: 'classic tls' "
- "which is used on systems with glibc 2.2 or older, and 'new tls' "
- "which is used on systems with tls-enabled glibc 2.3 or newer. "
- "nvidia-installer will select the OpenGL libraries appropriate "
- "for your system; however, you may use this option to force the "
- "installer to install one library type or another. Valid values "
- "for &FORCE-TLS& are 'new' and 'classic'." },
-
-#if defined(NV_X86_64)
- { "force-tls-compat32", FORCE_TLS_COMPAT32_OPTION,
- NVGETOPT_STRING_ARGUMENT, NULL,
- "This option forces the installer to install a specific "
- "32bit compatibility OpenGL TLS library; further details "
- "can be found in the description of the '--force-tls' option." },
-#endif /* NV_X86_64 */
-#endif
-
{ "kernel-name", 'k', NVGETOPT_STRING_ARGUMENT, NULL,
"Build and install the NVIDIA kernel module for the "
"non-running kernel specified by &KERNEL-NAME& (&KERNEL-NAME& "
@@ -689,6 +669,9 @@ static const NVGetoptOption __options[] = {
{ "no-runlevel-check", NO_RUNLEVEL_CHECK_OPTION, 0, NULL, NULL },
{ "install-vdpau-wrapper", INSTALL_VDPAU_WRAPPER_OPTION, NVGETOPT_IS_BOOLEAN, NULL, NULL },
{ "no-network", 'N', 0, NULL, NULL },
+ { "force-tls", FORCE_TLS_OPTION, NVGETOPT_STRING_ARGUMENT, NULL, NULL },
+ { "force-tls-compat32", FORCE_TLS_COMPAT32_OPTION, NVGETOPT_STRING_ARGUMENT,
+ NULL, NULL },
{ NULL, 0, 0, NULL, NULL },
};
diff --git a/tls_test.c b/tls_test.c
deleted file mode 100644
index 22dd131..0000000
--- a/tls_test.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Trivial __thread variable test.
- *
- * Gareth Hughes <gareth@nvidia.com>
- */
-
-#include <signal.h>
-#include <dlfcn.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-void seghandle(int bar);
-
-int main(int argc, char *argv[])
-{
- void *handle;
- int (*func)(void);
-
- signal(SIGSEGV, seghandle);
-
- if (argc != 2) {
- exit(1);
- }
-
- handle = dlopen(argv[1], RTLD_NOW);
- if (!handle) {
- exit(1);
- }
-
- func = dlsym(handle, "getTLSVar");
- if (!func) {
- exit(1);
- }
-
- func();
-
- if (dlclose(handle) != 0) {
- exit(1);
- }
-
- return 0;
-}
-
-void seghandle(int bar)
-{
- exit(1);
-}
diff --git a/tls_test_Linux-x86 b/tls_test_Linux-x86
deleted file mode 100755
index 9622f7c..0000000
--- a/tls_test_Linux-x86
+++ /dev/null
Binary files differ
diff --git a/tls_test_Linux-x86_64 b/tls_test_Linux-x86_64
deleted file mode 100755
index 4a7a927..0000000
--- a/tls_test_Linux-x86_64
+++ /dev/null
Binary files differ
diff --git a/tls_test_dso.c b/tls_test_dso.c
deleted file mode 100644
index e7f90b9..0000000
--- a/tls_test_dso.c
+++ /dev/null
@@ -1,7 +0,0 @@
-static __thread int foo;
-
-int getTLSVar(void)
-{
- foo = 0;
- return foo;
-}
diff --git a/tls_test_dso_Linux-x86.so b/tls_test_dso_Linux-x86.so
deleted file mode 100755
index 2418309..0000000
--- a/tls_test_dso_Linux-x86.so
+++ /dev/null
Binary files differ
diff --git a/tls_test_dso_Linux-x86_64.so b/tls_test_dso_Linux-x86_64.so
deleted file mode 100755
index be74433..0000000
--- a/tls_test_dso_Linux-x86_64.so
+++ /dev/null
Binary files differ
diff --git a/version.mk b/version.mk
index 0032b02..da40957 100644
--- a/version.mk
+++ b/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 410.73
+NVIDIA_VERSION = 415.13