Sorry if you get multiple copies of this.

The test for this is failing on solaris 10 (NFS)
It does seem that hardlinks to symlinks are supported:

$ touch tfile
$ ln -s tfile tlink
$ src/ln -L tlink tlink-ln-L
$ src/ln -P tlink tlink-ln-P
$ src/ln tlink tlink-ln
$ ls -li tfile tlink*
      8550 -rw-r--r--   3 padraig  csw            0 Dec  9 01:18 tfile
      8551 lrwxrwxrwx   2 padraig  csw            5 Dec  9 01:19 tlink -> tfile
      8550 -rw-r--r--   3 padraig  csw            0 Dec  9 01:18 tlink-ln
      8550 -rw-r--r--   3 padraig  csw            0 Dec  9 01:18 tlink-ln-L
      8551 lrwxrwxrwx   2 padraig  csw            5 Dec  9 01:19 tlink-ln-P -> 
tfile

But we have linkat() emulation in place I think:

$ grep LINK lib/config.h
/* #undef CHOWN_MODIFIES_SYMLINK */
#define GNULIB_AREADLINKAT 1
#define GNULIB_TEST_LINK 1
#define GNULIB_TEST_LINKAT 1
#define GNULIB_TEST_READLINK 1
#define GNULIB_TEST_READLINKAT 1
#define GNULIB_TEST_SYMLINK 1
#define GNULIB_TEST_SYMLINKAT 1
#define GNULIB_TEST_UNLINK 1
#define GNULIB_TEST_UNLINKAT 1
#define HAVE_LINK 1
/* #undef HAVE_LINKAT */
#define HAVE_READLINK 1
/* #undef HAVE_READLINKAT */
#define HAVE_SYMLINK 1
/* #undef HAVE_SYMLINKAT */
#define HAVE_UNLINKAT 1
/* #undef LINKAT_TRAILING_SLASH_BUG */
#define LINK_FOLLOWS_SYMLINKS -1
#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
#define PIPE_LINK_COUNT_MAX (0)
/* #undef READLINK_TRAILING_SLASH_BUG */
/* #undef RENAME_HARD_LINK_BUG */
/* #undef UNLINK_CANNOT_UNLINK_DIR */
/* #undef UNLINK_PARENT_BUG */

I've attached the verbose log for the test,
as I've not time to look into it at present.

thanks,
Pádraig.

==========================================================
   GNU coreutils 8.21.176-37e00: ./tests/test-suite.log
==========================================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: tests/cp/link-deref
=========================

++ initial_cwd_=/home/padraig/coreutils-8.21.176-37e00
++ fail=0
+++ testdir_prefix_
+++ printf gt
++ pfx_=gt
+++ mktempd_ /home/padraig/coreutils-8.21.176-37e00 gt-link-deref.sh.XXXX
+++ case $# in
+++ destdir_=/home/padraig/coreutils-8.21.176-37e00
+++ template_=gt-link-deref.sh.XXXX
+++ MAX_TRIES_=4
+++ case $destdir_ in
+++ case $template_ in
++++ unset TMPDIR
+++ d=/home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
+++ case $d in
+++ test -d /home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
++++ ls -dgo /home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
++++ tr S -
+++ perms='drwx------ 2 2 Dec  9 01:00 /home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP'
+++ case $perms in
+++ test 0 = 0
+++ echo /home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
+++ return
++ test_dir_=/home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
++ cd /home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
++ gl_init_sh_nl_='
'
++ IFS=' 	
'
++ for sig_ in 1 2 3 13 15
+++ expr 1 + 128
++ eval 'trap '\''Exit 129'\'' 1'
+++ trap 'Exit 129' 1
++ for sig_ in 1 2 3 13 15
+++ expr 2 + 128
++ eval 'trap '\''Exit 130'\'' 2'
+++ trap 'Exit 130' 2
++ for sig_ in 1 2 3 13 15
+++ expr 3 + 128
++ eval 'trap '\''Exit 131'\'' 3'
+++ trap 'Exit 131' 3
++ for sig_ in 1 2 3 13 15
+++ expr 13 + 128
++ eval 'trap '\''Exit 141'\'' 13'
+++ trap 'Exit 141' 13
++ for sig_ in 1 2 3 13 15
+++ expr 15 + 128
++ eval 'trap '\''Exit 143'\'' 15'
+++ trap 'Exit 143' 15
++ trap remove_tmp_ 0
+ path_prepend_ ./src
+ test 1 '!=' 0
+ path_dir_=./src
+ case $path_dir_ in
+ abs_path_dir_=/home/padraig/coreutils-8.21.176-37e00/./src
+ case $abs_path_dir_ in
+ PATH=/home/padraig/coreutils-8.21.176-37e00/./src:/home/padraig/coreutils-8.21.176-37e00/src:/usr/xpg4/bin:/usr/bin:/usr/sbin:/sbin:/usr/ccs/bin:/usr/dt/bin:/usr/openwin/bin:/opt/RICHPse/bin:/opt/bop/bin:/opt/csw/bin:/usr/sfw/bin:/usr/sfw/sbin
+ create_exe_shims_ /home/padraig/coreutils-8.21.176-37e00/./src
+ case $EXEEXT in
+ return 0
+ shift
+ test 0 '!=' 0
+ export PATH
+ print_ver_ cp
+ test yes = yes
+ local i
+ for i in '$*'
+ env cp --version
cp (GNU coreutils) 8.21.176-37e00
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering.
+ mkdir dir
+ :
+ ln -s dir dirlink
+ ln -s file filelink
+ ln -s nowhere danglink
+ outformat='%s|result=%s|inode=%s|type=%s|error=%s\n'
+ for src in dirlink filelink danglink
++ readlink dirlink
+ tgt=dir
++ stat -c %i dirlink
+ ino_src=8436
++ stat -c %F dirlink
+ typ_src='symbolic link'
++ stat -c %i dir
+ ino_tgt=8434
++ stat -c %F dir
+ typ_tgt=directory
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link   dirlink dst'
+ cp --link dirlink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link   dirlink dst' 1 '' '' 'cp: omitting directory '\''dirlink'\'''
+ '[' '' = -P ']'
+ '[' dirlink = danglink ']'
+ '[' dirlink = dirlink ']'
+ '[' '' '!=' -R ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: omitting directory '\''dirlink'\'''
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link   dirlink dst' 1 '' '' 'cp: omitting directory '\''dirlink'\'''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link  -R dirlink dst'
+ cp --link -R dirlink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8444
++ stat -c %F dst
+ typ_dst=directory
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link  -R dirlink dst' 0 8444 directory ''
+ '[' '' = -P ']'
+ '[' dirlink = danglink ']'
+ '[' dirlink = dirlink ']'
+ '[' -R '!=' -R ']'
+ '[' dirlink = dirlink ']'
+ exp_result=0
+ exp_inode=8444
+ exp_ftype=directory
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link  -R dirlink dst' 0 8444 directory ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -L  dirlink dst'
+ cp --link -L dirlink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L  dirlink dst' 1 '' '' 'cp: omitting directory '\''dirlink'\'''
+ '[' -L = -P ']'
+ '[' dirlink = danglink ']'
+ '[' dirlink = dirlink ']'
+ '[' '' '!=' -R ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: omitting directory '\''dirlink'\'''
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L  dirlink dst' 1 '' '' 'cp: omitting directory '\''dirlink'\'''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -L -R dirlink dst'
+ cp --link -L -R dirlink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8453
++ stat -c %F dst
+ typ_dst=directory
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L -R dirlink dst' 0 8453 directory ''
+ '[' -L = -P ']'
+ '[' dirlink = danglink ']'
+ '[' dirlink = dirlink ']'
+ '[' -R '!=' -R ']'
+ '[' dirlink = dirlink ']'
+ exp_result=0
+ exp_inode=8453
+ exp_ftype=directory
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L -R dirlink dst' 0 8453 directory ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -H  dirlink dst'
+ cp --link -H dirlink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H  dirlink dst' 1 '' '' 'cp: omitting directory '\''dirlink'\'''
+ '[' -H = -P ']'
+ '[' dirlink = danglink ']'
+ '[' dirlink = dirlink ']'
+ '[' '' '!=' -R ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: omitting directory '\''dirlink'\'''
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H  dirlink dst' 1 '' '' 'cp: omitting directory '\''dirlink'\'''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -H -R dirlink dst'
+ cp --link -H -R dirlink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8462
++ stat -c %F dst
+ typ_dst=directory
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H -R dirlink dst' 0 8462 directory ''
+ '[' -H = -P ']'
+ '[' dirlink = danglink ']'
+ '[' dirlink = dirlink ']'
+ '[' -R '!=' -R ']'
+ '[' dirlink = dirlink ']'
+ exp_result=0
+ exp_inode=8462
+ exp_ftype=directory
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H -R dirlink dst' 0 8462 directory ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -P  dirlink dst'
+ cp --link -P dirlink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8467
++ stat -c %F dst
+ typ_dst='symbolic link'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P  dirlink dst' 0 8467 'symbolic link' ''
+ '[' -P = -P ']'
+ exp_result=0
+ exp_inode=8436
+ exp_ftype='symbolic link'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P  dirlink dst' 0 8436 'symbolic link' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ cat diff.out
--- exp	Mon Dec  9 01:00:08 2013
+++ out	Mon Dec  9 01:00:08 2013
@@ -1,1 +1,1 @@
-cp --link -P  dirlink dst|result=0|inode=8436|type=symbolic link|error=
+cp --link -P  dirlink dst|result=0|inode=8467|type=symbolic link|error=
+ rm -f diff.out
+ false
+ ls -lid dirlink dir dst
8434 drwxr-xr-x 2 padraig csw 2 Dec  9 01:00 dir
8436 lrwxrwxrwx 1 padraig csw 3 Dec  9 01:00 dirlink -> dir
8467 lrwxrwxrwx 1 padraig csw 3 Dec  9 01:00 dst -> dir
+ fail=1
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -P -R dirlink dst'
+ cp --link -P -R dirlink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8472
++ stat -c %F dst
+ typ_dst='symbolic link'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P -R dirlink dst' 0 8472 'symbolic link' ''
+ '[' -P = -P ']'
+ exp_result=0
+ exp_inode=8436
+ exp_ftype='symbolic link'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P -R dirlink dst' 0 8436 'symbolic link' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ cat diff.out
--- exp	Mon Dec  9 01:00:09 2013
+++ out	Mon Dec  9 01:00:09 2013
@@ -1,1 +1,1 @@
-cp --link -P -R dirlink dst|result=0|inode=8436|type=symbolic link|error=
+cp --link -P -R dirlink dst|result=0|inode=8472|type=symbolic link|error=
+ rm -f diff.out
+ false
+ ls -lid dirlink dir dst
8434 drwxr-xr-x 2 padraig csw 2 Dec  9 01:00 dir
8436 lrwxrwxrwx 1 padraig csw 3 Dec  9 01:00 dirlink -> dir
8472 lrwxrwxrwx 1 padraig csw 3 Dec  9 01:00 dst -> dir
+ fail=1
+ rm -rf dst err exp out
+ for src in dirlink filelink danglink
++ readlink filelink
+ tgt=file
++ stat -c %i filelink
+ ino_src=8437
++ stat -c %F filelink
+ typ_src='symbolic link'
++ stat -c %i file
+ ino_tgt=8435
++ stat -c %F file
+ typ_tgt='regular empty file'
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link   filelink dst'
+ cp --link filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8435
++ stat -c %F dst
+ typ_dst='regular empty file'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link   filelink dst' 0 8435 'regular empty file' ''
+ '[' '' = -P ']'
+ '[' filelink = danglink ']'
+ '[' filelink = dirlink ']'
+ '[' filelink = dirlink ']'
+ exp_result=0
+ exp_inode=8435
+ exp_ftype='regular empty file'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link   filelink dst' 0 8435 'regular empty file' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link  -R filelink dst'
+ cp --link -R filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8435
++ stat -c %F dst
+ typ_dst='regular empty file'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link  -R filelink dst' 0 8435 'regular empty file' ''
+ '[' '' = -P ']'
+ '[' filelink = danglink ']'
+ '[' filelink = dirlink ']'
+ '[' filelink = dirlink ']'
+ exp_result=0
+ exp_inode=8435
+ exp_ftype='regular empty file'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link  -R filelink dst' 0 8435 'regular empty file' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -L  filelink dst'
+ cp --link -L filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8435
++ stat -c %F dst
+ typ_dst='regular empty file'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L  filelink dst' 0 8435 'regular empty file' ''
+ '[' -L = -P ']'
+ '[' filelink = danglink ']'
+ '[' filelink = dirlink ']'
+ '[' filelink = dirlink ']'
+ exp_result=0
+ exp_inode=8435
+ exp_ftype='regular empty file'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L  filelink dst' 0 8435 'regular empty file' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -L -R filelink dst'
+ cp --link -L -R filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8435
++ stat -c %F dst
+ typ_dst='regular empty file'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L -R filelink dst' 0 8435 'regular empty file' ''
+ '[' -L = -P ']'
+ '[' filelink = danglink ']'
+ '[' filelink = dirlink ']'
+ '[' filelink = dirlink ']'
+ exp_result=0
+ exp_inode=8435
+ exp_ftype='regular empty file'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L -R filelink dst' 0 8435 'regular empty file' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -H  filelink dst'
+ cp --link -H filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8435
++ stat -c %F dst
+ typ_dst='regular empty file'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H  filelink dst' 0 8435 'regular empty file' ''
+ '[' -H = -P ']'
+ '[' filelink = danglink ']'
+ '[' filelink = dirlink ']'
+ '[' filelink = dirlink ']'
+ exp_result=0
+ exp_inode=8435
+ exp_ftype='regular empty file'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H  filelink dst' 0 8435 'regular empty file' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -H -R filelink dst'
+ cp --link -H -R filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8435
++ stat -c %F dst
+ typ_dst='regular empty file'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H -R filelink dst' 0 8435 'regular empty file' ''
+ '[' -H = -P ']'
+ '[' filelink = danglink ']'
+ '[' filelink = dirlink ']'
+ '[' filelink = dirlink ']'
+ exp_result=0
+ exp_inode=8435
+ exp_ftype='regular empty file'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H -R filelink dst' 0 8435 'regular empty file' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -P  filelink dst'
+ cp --link -P filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8502
++ stat -c %F dst
+ typ_dst='symbolic link'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P  filelink dst' 0 8502 'symbolic link' ''
+ '[' -P = -P ']'
+ exp_result=0
+ exp_inode=8437
+ exp_ftype='symbolic link'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P  filelink dst' 0 8437 'symbolic link' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ cat diff.out
--- exp	Mon Dec  9 01:00:09 2013
+++ out	Mon Dec  9 01:00:09 2013
@@ -1,1 +1,1 @@
-cp --link -P  filelink dst|result=0|inode=8437|type=symbolic link|error=
+cp --link -P  filelink dst|result=0|inode=8502|type=symbolic link|error=
+ rm -f diff.out
+ false
+ ls -lid filelink file dst
8502 lrwxrwxrwx 1 padraig csw 4 Dec  9 01:00 dst -> file
8435 -rw-r--r-- 1 padraig csw 0 Dec  9 01:00 file
8437 lrwxrwxrwx 1 padraig csw 4 Dec  9 01:00 filelink -> file
+ fail=1
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -P -R filelink dst'
+ cp --link -P -R filelink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8507
++ stat -c %F dst
+ typ_dst='symbolic link'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P -R filelink dst' 0 8507 'symbolic link' ''
+ '[' -P = -P ']'
+ exp_result=0
+ exp_inode=8437
+ exp_ftype='symbolic link'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P -R filelink dst' 0 8437 'symbolic link' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ cat diff.out
--- exp	Mon Dec  9 01:00:10 2013
+++ out	Mon Dec  9 01:00:10 2013
@@ -1,1 +1,1 @@
-cp --link -P -R filelink dst|result=0|inode=8437|type=symbolic link|error=
+cp --link -P -R filelink dst|result=0|inode=8507|type=symbolic link|error=
+ rm -f diff.out
+ false
+ ls -lid filelink file dst
8507 lrwxrwxrwx 1 padraig csw 4 Dec  9 01:00 dst -> file
8435 -rw-r--r-- 1 padraig csw 0 Dec  9 01:00 file
8437 lrwxrwxrwx 1 padraig csw 4 Dec  9 01:00 filelink -> file
+ fail=1
+ rm -rf dst err exp out
+ for src in dirlink filelink danglink
++ readlink danglink
+ tgt=nowhere
++ stat -c %i danglink
+ ino_src=8438
++ stat -c %F danglink
+ typ_src='symbolic link'
++ stat -c %i nowhere
+ ino_tgt=
+ ino_tgt=
++ stat -c %F nowhere
+ typ_tgt=
+ typ_tgt=
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link   danglink dst'
+ cp --link danglink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link   danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ '[' '' = -P ']'
+ '[' danglink = danglink ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: cannot stat '\''danglink'\'': No such file or directory'
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link   danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link  -R danglink dst'
+ cp --link -R danglink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link  -R danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ '[' '' = -P ']'
+ '[' danglink = danglink ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: cannot stat '\''danglink'\'': No such file or directory'
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link  -R danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -L  danglink dst'
+ cp --link -L danglink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L  danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ '[' -L = -P ']'
+ '[' danglink = danglink ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: cannot stat '\''danglink'\'': No such file or directory'
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L  danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -L -R danglink dst'
+ cp --link -L -R danglink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L -R danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ '[' -L = -P ']'
+ '[' danglink = danglink ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: cannot stat '\''danglink'\'': No such file or directory'
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -L -R danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -H  danglink dst'
+ cp --link -H danglink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H  danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ '[' -H = -P ']'
+ '[' danglink = danglink ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: cannot stat '\''danglink'\'': No such file or directory'
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H  danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -H -R danglink dst'
+ cp --link -H -R danglink dst
+ result=1
++ stat -c %i dst
+ ino_dst=
+ ini_dst=
++ stat -c %F dst
+ typ_dst=
+ typ_dst=
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H -R danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ '[' -H = -P ']'
+ '[' danglink = danglink ']'
+ exp_result=1
+ exp_inode=
+ exp_ftype=
+ exp_error='cp: cannot stat '\''danglink'\'': No such file or directory'
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -H -R danglink dst' 1 '' '' 'cp: cannot stat '\''danglink'\'': No such file or directory'
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ rm -f diff.out
+ true
+ rm -rf dst err exp out
+ for o in ''\'''\''' -L -H -P
+ for r in ''\'''\''' -R
+ command='cp --link -P  danglink dst'
+ cp --link -P danglink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8536
++ stat -c %F dst
+ typ_dst='symbolic link'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P  danglink dst' 0 8536 'symbolic link' ''
+ '[' -P = -P ']'
+ exp_result=0
+ exp_inode=8438
+ exp_ftype='symbolic link'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P  danglink dst' 0 8438 'symbolic link' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ cat diff.out
--- exp	Mon Dec  9 01:00:10 2013
+++ out	Mon Dec  9 01:00:10 2013
@@ -1,1 +1,1 @@
-cp --link -P  danglink dst|result=0|inode=8438|type=symbolic link|error=
+cp --link -P  danglink dst|result=0|inode=8536|type=symbolic link|error=
+ rm -f diff.out
+ false
+ ls -lid danglink nowhere dst
ls: cannot access nowhere: No such file or directory
8438 lrwxrwxrwx 1 padraig csw 7 Dec  9 01:00 danglink -> nowhere
8536 lrwxrwxrwx 1 padraig csw 7 Dec  9 01:00 dst -> nowhere
+ fail=1
+ rm -rf dst err exp out
+ for r in ''\'''\''' -R
+ command='cp --link -P -R danglink dst'
+ cp --link -P -R danglink dst
+ result=0
++ stat -c %i dst
+ ino_dst=8541
++ stat -c %F dst
+ typ_dst='symbolic link'
++ cat err
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P -R danglink dst' 0 8541 'symbolic link' ''
+ '[' -P = -P ']'
+ exp_result=0
+ exp_inode=8438
+ exp_ftype='symbolic link'
+ exp_error=
+ printf '%s|result=%s|inode=%s|type=%s|error=%s\n' 'cp --link -P -R danglink dst' 0 8438 'symbolic link' ''
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ cat diff.out
--- exp	Mon Dec  9 01:00:10 2013
+++ out	Mon Dec  9 01:00:10 2013
@@ -1,1 +1,1 @@
-cp --link -P -R danglink dst|result=0|inode=8438|type=symbolic link|error=
+cp --link -P -R danglink dst|result=0|inode=8541|type=symbolic link|error=
+ rm -f diff.out
+ false
+ ls -lid danglink nowhere dst
ls: cannot access nowhere: No such file or directory
8438 lrwxrwxrwx 1 padraig csw 7 Dec  9 01:00 danglink -> nowhere
8541 lrwxrwxrwx 1 padraig csw 7 Dec  9 01:00 dst -> nowhere
+ fail=1
+ rm -rf dst err exp out
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ :
+ cd /home/padraig/coreutils-8.21.176-37e00
+ chmod -R u+rwx /home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
+ rm -rf /home/padraig/coreutils-8.21.176-37e00/gt-link-deref.sh.j8UP
+ exit 1

Reply via email to